/*******************************************************************************
 * Copyright (c) 2022 BestSolution.at and others.
 *  
 * This program and the accompanying materials are made available under the
 * terms of the Eclipse Public License v.2.0 which is available at
 * https://www.eclipse.org/legal/epl-2.0.
 *  
 * SPDX-License-Identifier: EPL-2.0
 *  
 * Contributors:
 *     BestSolution.at - initial API and implementation
 *******************************************************************************/
/*
 * generated by Xtext
 */
package org.eclipse.fx.ide.css.services;

import com.google.inject.Singleton;
import com.google.inject.Inject;

import java.util.List;

import org.eclipse.xtext.*;
import org.eclipse.xtext.service.GrammarProvider;
import org.eclipse.xtext.service.AbstractElementFinder.*;


@Singleton
public class CssDslGrammarAccess extends AbstractGrammarElementFinder {
	
	
	public class StylesheetElements extends AbstractParserRuleElementFinder {
		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "stylesheet");
		private final Group cGroup = (Group)rule.eContents().get(1);
		private final Assignment cCharsetAssignment_0 = (Assignment)cGroup.eContents().get(0);
		private final RuleCall cCharsetCharsetParserRuleCall_0_0 = (RuleCall)cCharsetAssignment_0.eContents().get(0);
		private final Assignment cImportsAssignment_1 = (Assignment)cGroup.eContents().get(1);
		private final RuleCall cImportsImportExpressionParserRuleCall_1_0 = (RuleCall)cImportsAssignment_1.eContents().get(0);
		private final Alternatives cAlternatives_2 = (Alternatives)cGroup.eContents().get(2);
		private final Assignment cRulesetAssignment_2_0 = (Assignment)cAlternatives_2.eContents().get(0);
		private final RuleCall cRulesetRulesetParserRuleCall_2_0_0 = (RuleCall)cRulesetAssignment_2_0.eContents().get(0);
		private final Assignment cMediaAssignment_2_1 = (Assignment)cAlternatives_2.eContents().get(1);
		private final RuleCall cMediaMediaParserRuleCall_2_1_0 = (RuleCall)cMediaAssignment_2_1.eContents().get(0);
		private final Assignment cPageAssignment_2_2 = (Assignment)cAlternatives_2.eContents().get(2);
		private final RuleCall cPagePageParserRuleCall_2_2_0 = (RuleCall)cPageAssignment_2_2.eContents().get(0);
		private final Assignment cFont_faceAssignment_2_3 = (Assignment)cAlternatives_2.eContents().get(3);
		private final RuleCall cFont_faceFont_faceParserRuleCall_2_3_0 = (RuleCall)cFont_faceAssignment_2_3.eContents().get(0);
		private final Assignment cKeyframesAssignment_2_4 = (Assignment)cAlternatives_2.eContents().get(4);
		private final RuleCall cKeyframesKeyframesParserRuleCall_2_4_0 = (RuleCall)cKeyframesAssignment_2_4.eContents().get(0);
		
		//stylesheet:
		//	charset=charset? imports+=importExpression* (ruleset+=ruleset | media+=media | page+=page | font_face+=font_face |
		//	keyframes+=keyframes)*;
		@Override public ParserRule getRule() { return rule; }

		//charset=charset? imports+=importExpression* (ruleset+=ruleset | media+=media | page+=page | font_face+=font_face |
		//keyframes+=keyframes)*
		public Group getGroup() { return cGroup; }

		//charset=charset?
		public Assignment getCharsetAssignment_0() { return cCharsetAssignment_0; }

		//charset
		public RuleCall getCharsetCharsetParserRuleCall_0_0() { return cCharsetCharsetParserRuleCall_0_0; }

		//imports+=importExpression*
		public Assignment getImportsAssignment_1() { return cImportsAssignment_1; }

		//importExpression
		public RuleCall getImportsImportExpressionParserRuleCall_1_0() { return cImportsImportExpressionParserRuleCall_1_0; }

		//(ruleset+=ruleset | media+=media | page+=page | font_face+=font_face | keyframes+=keyframes)*
		public Alternatives getAlternatives_2() { return cAlternatives_2; }

		//ruleset+=ruleset
		public Assignment getRulesetAssignment_2_0() { return cRulesetAssignment_2_0; }

		//ruleset
		public RuleCall getRulesetRulesetParserRuleCall_2_0_0() { return cRulesetRulesetParserRuleCall_2_0_0; }

		//media+=media
		public Assignment getMediaAssignment_2_1() { return cMediaAssignment_2_1; }

		//media
		public RuleCall getMediaMediaParserRuleCall_2_1_0() { return cMediaMediaParserRuleCall_2_1_0; }

		//page+=page
		public Assignment getPageAssignment_2_2() { return cPageAssignment_2_2; }

		//page
		public RuleCall getPagePageParserRuleCall_2_2_0() { return cPagePageParserRuleCall_2_2_0; }

		//font_face+=font_face
		public Assignment getFont_faceAssignment_2_3() { return cFont_faceAssignment_2_3; }

		//font_face
		public RuleCall getFont_faceFont_faceParserRuleCall_2_3_0() { return cFont_faceFont_faceParserRuleCall_2_3_0; }

		//keyframes+=keyframes
		public Assignment getKeyframesAssignment_2_4() { return cKeyframesAssignment_2_4; }

		//keyframes
		public RuleCall getKeyframesKeyframesParserRuleCall_2_4_0() { return cKeyframesKeyframesParserRuleCall_2_4_0; }
	}

	public class CharsetElements extends AbstractParserRuleElementFinder {
		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "charset");
		private final Group cGroup = (Group)rule.eContents().get(1);
		private final Alternatives cAlternatives_0 = (Alternatives)cGroup.eContents().get(0);
		private final Keyword cCharsetKeyword_0_0 = (Keyword)cAlternatives_0.eContents().get(0);
		private final Keyword cCHARSETKeyword_0_1 = (Keyword)cAlternatives_0.eContents().get(1);
		private final Assignment cCharsetAssignment_1 = (Assignment)cGroup.eContents().get(1);
		private final RuleCall cCharsetCSSSTRINGTerminalRuleCall_1_0 = (RuleCall)cCharsetAssignment_1.eContents().get(0);
		private final Keyword cSemicolonKeyword_2 = (Keyword)cGroup.eContents().get(2);
		
		//charset:
		//	("@charset" | "@CHARSET") charset=CSSSTRING ";";
		@Override public ParserRule getRule() { return rule; }

		//("@charset" | "@CHARSET") charset=CSSSTRING ";"
		public Group getGroup() { return cGroup; }

		//"@charset" | "@CHARSET"
		public Alternatives getAlternatives_0() { return cAlternatives_0; }

		//"@charset"
		public Keyword getCharsetKeyword_0_0() { return cCharsetKeyword_0_0; }

		//"@CHARSET"
		public Keyword getCHARSETKeyword_0_1() { return cCHARSETKeyword_0_1; }

		//charset=CSSSTRING
		public Assignment getCharsetAssignment_1() { return cCharsetAssignment_1; }

		//CSSSTRING
		public RuleCall getCharsetCSSSTRINGTerminalRuleCall_1_0() { return cCharsetCSSSTRINGTerminalRuleCall_1_0; }

		//";"
		public Keyword getSemicolonKeyword_2() { return cSemicolonKeyword_2; }
	}

	public class ImportExpressionElements extends AbstractParserRuleElementFinder {
		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "importExpression");
		private final Group cGroup = (Group)rule.eContents().get(1);
		private final Alternatives cAlternatives_0 = (Alternatives)cGroup.eContents().get(0);
		private final Keyword cImportKeyword_0_0 = (Keyword)cAlternatives_0.eContents().get(0);
		private final Keyword cIMPORTKeyword_0_1 = (Keyword)cAlternatives_0.eContents().get(1);
		private final Alternatives cAlternatives_1 = (Alternatives)cGroup.eContents().get(1);
		private final Assignment cValueAssignment_1_0 = (Assignment)cAlternatives_1.eContents().get(0);
		private final RuleCall cValueCSSSTRINGTerminalRuleCall_1_0_0 = (RuleCall)cValueAssignment_1_0.eContents().get(0);
		private final Group cGroup_1_1 = (Group)cAlternatives_1.eContents().get(1);
		private final RuleCall cURLTypeParserRuleCall_1_1_0 = (RuleCall)cGroup_1_1.eContents().get(0);
		private final Assignment cMediaListAssignment_1_1_1 = (Assignment)cGroup_1_1.eContents().get(1);
		private final RuleCall cMediaListMedia_listParserRuleCall_1_1_1_0 = (RuleCall)cMediaListAssignment_1_1_1.eContents().get(0);
		private final Keyword cSemicolonKeyword_2 = (Keyword)cGroup.eContents().get(2);
		
		//importExpression:
		//	("@import" | "@IMPORT") (value=CSSSTRING | URLType mediaList=media_list?) ";";
		@Override public ParserRule getRule() { return rule; }

		//("@import" | "@IMPORT") (value=CSSSTRING | URLType mediaList=media_list?) ";"
		public Group getGroup() { return cGroup; }

		//"@import" | "@IMPORT"
		public Alternatives getAlternatives_0() { return cAlternatives_0; }

		//"@import"
		public Keyword getImportKeyword_0_0() { return cImportKeyword_0_0; }

		//"@IMPORT"
		public Keyword getIMPORTKeyword_0_1() { return cIMPORTKeyword_0_1; }

		//value=CSSSTRING | URLType mediaList=media_list?
		public Alternatives getAlternatives_1() { return cAlternatives_1; }

		//value=CSSSTRING
		public Assignment getValueAssignment_1_0() { return cValueAssignment_1_0; }

		//CSSSTRING
		public RuleCall getValueCSSSTRINGTerminalRuleCall_1_0_0() { return cValueCSSSTRINGTerminalRuleCall_1_0_0; }

		//URLType mediaList=media_list?
		public Group getGroup_1_1() { return cGroup_1_1; }

		//URLType
		public RuleCall getURLTypeParserRuleCall_1_1_0() { return cURLTypeParserRuleCall_1_1_0; }

		//mediaList=media_list?
		public Assignment getMediaListAssignment_1_1_1() { return cMediaListAssignment_1_1_1; }

		//media_list
		public RuleCall getMediaListMedia_listParserRuleCall_1_1_1_0() { return cMediaListMedia_listParserRuleCall_1_1_1_0; }

		//";"
		public Keyword getSemicolonKeyword_2() { return cSemicolonKeyword_2; }
	}

	public class PageElements extends AbstractParserRuleElementFinder {
		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "page");
		private final Group cGroup = (Group)rule.eContents().get(1);
		private final Action cPageAction_0 = (Action)cGroup.eContents().get(0);
		private final Alternatives cAlternatives_1 = (Alternatives)cGroup.eContents().get(1);
		private final Keyword cPageKeyword_1_0 = (Keyword)cAlternatives_1.eContents().get(0);
		private final Keyword cPAGEKeyword_1_1 = (Keyword)cAlternatives_1.eContents().get(1);
		private final Assignment cPseudoPageAssignment_2 = (Assignment)cGroup.eContents().get(2);
		private final RuleCall cPseudoPagePseudo_pageParserRuleCall_2_0 = (RuleCall)cPseudoPageAssignment_2.eContents().get(0);
		private final Keyword cLeftCurlyBracketKeyword_3 = (Keyword)cGroup.eContents().get(3);
		private final Assignment cDeclarationsAssignment_4 = (Assignment)cGroup.eContents().get(4);
		private final RuleCall cDeclarationsCss_declarationParserRuleCall_4_0 = (RuleCall)cDeclarationsAssignment_4.eContents().get(0);
		private final Group cGroup_5 = (Group)cGroup.eContents().get(5);
		private final Keyword cSemicolonKeyword_5_0 = (Keyword)cGroup_5.eContents().get(0);
		private final Assignment cDeclarationsAssignment_5_1 = (Assignment)cGroup_5.eContents().get(1);
		private final RuleCall cDeclarationsCss_declarationParserRuleCall_5_1_0 = (RuleCall)cDeclarationsAssignment_5_1.eContents().get(0);
		private final Keyword cRightCurlyBracketKeyword_6 = (Keyword)cGroup.eContents().get(6);
		
		//page:
		//	{page} ("@page" | "@PAGE") pseudoPage=pseudo_page? "{" declarations+=css_declaration? (";"
		//	declarations+=css_declaration?)* "}";
		@Override public ParserRule getRule() { return rule; }

		//{page} ("@page" | "@PAGE") pseudoPage=pseudo_page? "{" declarations+=css_declaration? (";"
		//declarations+=css_declaration?)* "}"
		public Group getGroup() { return cGroup; }

		//{page}
		public Action getPageAction_0() { return cPageAction_0; }

		//"@page" | "@PAGE"
		public Alternatives getAlternatives_1() { return cAlternatives_1; }

		//"@page"
		public Keyword getPageKeyword_1_0() { return cPageKeyword_1_0; }

		//"@PAGE"
		public Keyword getPAGEKeyword_1_1() { return cPAGEKeyword_1_1; }

		//pseudoPage=pseudo_page?
		public Assignment getPseudoPageAssignment_2() { return cPseudoPageAssignment_2; }

		//pseudo_page
		public RuleCall getPseudoPagePseudo_pageParserRuleCall_2_0() { return cPseudoPagePseudo_pageParserRuleCall_2_0; }

		//"{"
		public Keyword getLeftCurlyBracketKeyword_3() { return cLeftCurlyBracketKeyword_3; }

		//declarations+=css_declaration?
		public Assignment getDeclarationsAssignment_4() { return cDeclarationsAssignment_4; }

		//css_declaration
		public RuleCall getDeclarationsCss_declarationParserRuleCall_4_0() { return cDeclarationsCss_declarationParserRuleCall_4_0; }

		//(";" declarations+=css_declaration?)*
		public Group getGroup_5() { return cGroup_5; }

		//";"
		public Keyword getSemicolonKeyword_5_0() { return cSemicolonKeyword_5_0; }

		//declarations+=css_declaration?
		public Assignment getDeclarationsAssignment_5_1() { return cDeclarationsAssignment_5_1; }

		//css_declaration
		public RuleCall getDeclarationsCss_declarationParserRuleCall_5_1_0() { return cDeclarationsCss_declarationParserRuleCall_5_1_0; }

		//"}"
		public Keyword getRightCurlyBracketKeyword_6() { return cRightCurlyBracketKeyword_6; }
	}

	public class Pseudo_pageElements extends AbstractParserRuleElementFinder {
		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "pseudo_page");
		private final Group cGroup = (Group)rule.eContents().get(1);
		private final RuleCall cCOLONTerminalRuleCall_0 = (RuleCall)cGroup.eContents().get(0);
		private final RuleCall cIdentifierParserRuleCall_1 = (RuleCall)cGroup.eContents().get(1);
		
		//pseudo_page:
		//	COLON Identifier;
		@Override public ParserRule getRule() { return rule; }

		//COLON Identifier
		public Group getGroup() { return cGroup; }

		//COLON
		public RuleCall getCOLONTerminalRuleCall_0() { return cCOLONTerminalRuleCall_0; }

		//Identifier
		public RuleCall getIdentifierParserRuleCall_1() { return cIdentifierParserRuleCall_1; }
	}

	public class MediaElements extends AbstractParserRuleElementFinder {
		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "media");
		private final Group cGroup = (Group)rule.eContents().get(1);
		private final Alternatives cAlternatives_0 = (Alternatives)cGroup.eContents().get(0);
		private final Keyword cMediaKeyword_0_0 = (Keyword)cAlternatives_0.eContents().get(0);
		private final Keyword cMEDIAKeyword_0_1 = (Keyword)cAlternatives_0.eContents().get(1);
		private final Assignment cMedialistAssignment_1 = (Assignment)cGroup.eContents().get(1);
		private final RuleCall cMedialistMedia_listParserRuleCall_1_0 = (RuleCall)cMedialistAssignment_1.eContents().get(0);
		private final Keyword cLeftCurlyBracketKeyword_2 = (Keyword)cGroup.eContents().get(2);
		private final Assignment cRulesetsAssignment_3 = (Assignment)cGroup.eContents().get(3);
		private final RuleCall cRulesetsRulesetParserRuleCall_3_0 = (RuleCall)cRulesetsAssignment_3.eContents().get(0);
		private final Keyword cRightCurlyBracketKeyword_4 = (Keyword)cGroup.eContents().get(4);
		
		//media:
		//	("@media" | "@MEDIA") medialist=media_list "{" rulesets+=ruleset* "}";
		@Override public ParserRule getRule() { return rule; }

		//("@media" | "@MEDIA") medialist=media_list "{" rulesets+=ruleset* "}"
		public Group getGroup() { return cGroup; }

		//"@media" | "@MEDIA"
		public Alternatives getAlternatives_0() { return cAlternatives_0; }

		//"@media"
		public Keyword getMediaKeyword_0_0() { return cMediaKeyword_0_0; }

		//"@MEDIA"
		public Keyword getMEDIAKeyword_0_1() { return cMEDIAKeyword_0_1; }

		//medialist=media_list
		public Assignment getMedialistAssignment_1() { return cMedialistAssignment_1; }

		//media_list
		public RuleCall getMedialistMedia_listParserRuleCall_1_0() { return cMedialistMedia_listParserRuleCall_1_0; }

		//"{"
		public Keyword getLeftCurlyBracketKeyword_2() { return cLeftCurlyBracketKeyword_2; }

		//rulesets+=ruleset*
		public Assignment getRulesetsAssignment_3() { return cRulesetsAssignment_3; }

		//ruleset
		public RuleCall getRulesetsRulesetParserRuleCall_3_0() { return cRulesetsRulesetParserRuleCall_3_0; }

		//"}"
		public Keyword getRightCurlyBracketKeyword_4() { return cRightCurlyBracketKeyword_4; }
	}

	public class Media_listElements extends AbstractParserRuleElementFinder {
		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "media_list");
		private final Group cGroup = (Group)rule.eContents().get(1);
		private final RuleCall cMediumParserRuleCall_0 = (RuleCall)cGroup.eContents().get(0);
		private final Group cGroup_1 = (Group)cGroup.eContents().get(1);
		private final RuleCall cCOMMATerminalRuleCall_1_0 = (RuleCall)cGroup_1.eContents().get(0);
		private final RuleCall cMediumParserRuleCall_1_1 = (RuleCall)cGroup_1.eContents().get(1);
		
		//media_list:
		//	medium (COMMA medium)*;
		@Override public ParserRule getRule() { return rule; }

		//medium (COMMA medium)*
		public Group getGroup() { return cGroup; }

		//medium
		public RuleCall getMediumParserRuleCall_0() { return cMediumParserRuleCall_0; }

		//(COMMA medium)*
		public Group getGroup_1() { return cGroup_1; }

		//COMMA
		public RuleCall getCOMMATerminalRuleCall_1_0() { return cCOMMATerminalRuleCall_1_0; }

		//medium
		public RuleCall getMediumParserRuleCall_1_1() { return cMediumParserRuleCall_1_1; }
	}

	public class MediumElements extends AbstractParserRuleElementFinder {
		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "medium");
		private final RuleCall cIdentifierParserRuleCall = (RuleCall)rule.eContents().get(1);
		
		//medium:
		//	Identifier;
		@Override public ParserRule getRule() { return rule; }

		//Identifier
		public RuleCall getIdentifierParserRuleCall() { return cIdentifierParserRuleCall; }
	}

	public class Font_faceElements extends AbstractParserRuleElementFinder {
		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "font_face");
		private final Group cGroup = (Group)rule.eContents().get(1);
		private final Action cFont_faceAction_0 = (Action)cGroup.eContents().get(0);
		private final Alternatives cAlternatives_1 = (Alternatives)cGroup.eContents().get(1);
		private final Keyword cFontFaceKeyword_1_0 = (Keyword)cAlternatives_1.eContents().get(0);
		private final Keyword cFONTFACEKeyword_1_1 = (Keyword)cAlternatives_1.eContents().get(1);
		private final Keyword cLeftCurlyBracketKeyword_2 = (Keyword)cGroup.eContents().get(2);
		private final Assignment cDeclarationsAssignment_3 = (Assignment)cGroup.eContents().get(3);
		private final RuleCall cDeclarationsCss_declarationParserRuleCall_3_0 = (RuleCall)cDeclarationsAssignment_3.eContents().get(0);
		private final Group cGroup_4 = (Group)cGroup.eContents().get(4);
		private final Keyword cSemicolonKeyword_4_0 = (Keyword)cGroup_4.eContents().get(0);
		private final Assignment cDeclarationsAssignment_4_1 = (Assignment)cGroup_4.eContents().get(1);
		private final RuleCall cDeclarationsCss_declarationParserRuleCall_4_1_0 = (RuleCall)cDeclarationsAssignment_4_1.eContents().get(0);
		private final Keyword cRightCurlyBracketKeyword_5 = (Keyword)cGroup.eContents().get(5);
		
		//font_face:
		//	{font_face} ("@font-face" | "@FONT-FACE") "{" declarations+=css_declaration? (";" declarations+=css_declaration?)*
		//	"}";
		@Override public ParserRule getRule() { return rule; }

		//{font_face} ("@font-face" | "@FONT-FACE") "{" declarations+=css_declaration? (";" declarations+=css_declaration?)* "}"
		public Group getGroup() { return cGroup; }

		//{font_face}
		public Action getFont_faceAction_0() { return cFont_faceAction_0; }

		//"@font-face" | "@FONT-FACE"
		public Alternatives getAlternatives_1() { return cAlternatives_1; }

		//"@font-face"
		public Keyword getFontFaceKeyword_1_0() { return cFontFaceKeyword_1_0; }

		//"@FONT-FACE"
		public Keyword getFONTFACEKeyword_1_1() { return cFONTFACEKeyword_1_1; }

		//"{"
		public Keyword getLeftCurlyBracketKeyword_2() { return cLeftCurlyBracketKeyword_2; }

		//declarations+=css_declaration?
		public Assignment getDeclarationsAssignment_3() { return cDeclarationsAssignment_3; }

		//css_declaration
		public RuleCall getDeclarationsCss_declarationParserRuleCall_3_0() { return cDeclarationsCss_declarationParserRuleCall_3_0; }

		//(";" declarations+=css_declaration?)*
		public Group getGroup_4() { return cGroup_4; }

		//";"
		public Keyword getSemicolonKeyword_4_0() { return cSemicolonKeyword_4_0; }

		//declarations+=css_declaration?
		public Assignment getDeclarationsAssignment_4_1() { return cDeclarationsAssignment_4_1; }

		//css_declaration
		public RuleCall getDeclarationsCss_declarationParserRuleCall_4_1_0() { return cDeclarationsCss_declarationParserRuleCall_4_1_0; }

		//"}"
		public Keyword getRightCurlyBracketKeyword_5() { return cRightCurlyBracketKeyword_5; }
	}

	public class KeyframesElements extends AbstractParserRuleElementFinder {
		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "keyframes");
		private final Group cGroup = (Group)rule.eContents().get(1);
		private final Action cFont_faceAction_0 = (Action)cGroup.eContents().get(0);
		private final Alternatives cAlternatives_1 = (Alternatives)cGroup.eContents().get(1);
		private final Keyword cKeyframesKeyword_1_0 = (Keyword)cAlternatives_1.eContents().get(0);
		private final Keyword cKEYFRAMESKeyword_1_1 = (Keyword)cAlternatives_1.eContents().get(1);
		private final Assignment cNameAssignment_2 = (Assignment)cGroup.eContents().get(2);
		private final RuleCall cNameIdentifierParserRuleCall_2_0 = (RuleCall)cNameAssignment_2.eContents().get(0);
		private final Keyword cLeftCurlyBracketKeyword_3 = (Keyword)cGroup.eContents().get(3);
		private final Assignment cKeyframeselectorsAssignment_4 = (Assignment)cGroup.eContents().get(4);
		private final RuleCall cKeyframeselectorsKeyframe_selectorParserRuleCall_4_0 = (RuleCall)cKeyframeselectorsAssignment_4.eContents().get(0);
		private final Group cGroup_5 = (Group)cGroup.eContents().get(5);
		private final Keyword cSemicolonKeyword_5_0 = (Keyword)cGroup_5.eContents().get(0);
		private final Assignment cKeyframeselectorsAssignment_5_1 = (Assignment)cGroup_5.eContents().get(1);
		private final RuleCall cKeyframeselectorsKeyframe_selectorParserRuleCall_5_1_0 = (RuleCall)cKeyframeselectorsAssignment_5_1.eContents().get(0);
		private final Keyword cRightCurlyBracketKeyword_6 = (Keyword)cGroup.eContents().get(6);
		
		//keyframes:
		//	{font_face} ("@keyframes" | "@KEYFRAMES") name=Identifier "{" keyframeselectors+=keyframe_selector? (";"
		//	keyframeselectors+=keyframe_selector?)* "}";
		@Override public ParserRule getRule() { return rule; }

		//{font_face} ("@keyframes" | "@KEYFRAMES") name=Identifier "{" keyframeselectors+=keyframe_selector? (";"
		//keyframeselectors+=keyframe_selector?)* "}"
		public Group getGroup() { return cGroup; }

		//{font_face}
		public Action getFont_faceAction_0() { return cFont_faceAction_0; }

		//"@keyframes" | "@KEYFRAMES"
		public Alternatives getAlternatives_1() { return cAlternatives_1; }

		//"@keyframes"
		public Keyword getKeyframesKeyword_1_0() { return cKeyframesKeyword_1_0; }

		//"@KEYFRAMES"
		public Keyword getKEYFRAMESKeyword_1_1() { return cKEYFRAMESKeyword_1_1; }

		//name=Identifier
		public Assignment getNameAssignment_2() { return cNameAssignment_2; }

		//Identifier
		public RuleCall getNameIdentifierParserRuleCall_2_0() { return cNameIdentifierParserRuleCall_2_0; }

		//"{"
		public Keyword getLeftCurlyBracketKeyword_3() { return cLeftCurlyBracketKeyword_3; }

		//keyframeselectors+=keyframe_selector?
		public Assignment getKeyframeselectorsAssignment_4() { return cKeyframeselectorsAssignment_4; }

		//keyframe_selector
		public RuleCall getKeyframeselectorsKeyframe_selectorParserRuleCall_4_0() { return cKeyframeselectorsKeyframe_selectorParserRuleCall_4_0; }

		//(";" keyframeselectors+=keyframe_selector?)*
		public Group getGroup_5() { return cGroup_5; }

		//";"
		public Keyword getSemicolonKeyword_5_0() { return cSemicolonKeyword_5_0; }

		//keyframeselectors+=keyframe_selector?
		public Assignment getKeyframeselectorsAssignment_5_1() { return cKeyframeselectorsAssignment_5_1; }

		//keyframe_selector
		public RuleCall getKeyframeselectorsKeyframe_selectorParserRuleCall_5_1_0() { return cKeyframeselectorsKeyframe_selectorParserRuleCall_5_1_0; }

		//"}"
		public Keyword getRightCurlyBracketKeyword_6() { return cRightCurlyBracketKeyword_6; }
	}

	public class Keyframe_selectorElements extends AbstractParserRuleElementFinder {
		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "keyframe_selector");
		private final Group cGroup = (Group)rule.eContents().get(1);
		private final Alternatives cAlternatives_0 = (Alternatives)cGroup.eContents().get(0);
		private final Assignment cTypeAssignment_0_0 = (Assignment)cAlternatives_0.eContents().get(0);
		private final RuleCall cTypeIdentifierParserRuleCall_0_0_0 = (RuleCall)cTypeAssignment_0_0.eContents().get(0);
		private final Group cGroup_0_1 = (Group)cAlternatives_0.eContents().get(1);
		private final Assignment cPercentageAssignment_0_1_0 = (Assignment)cGroup_0_1.eContents().get(0);
		private final RuleCall cPercentageNumParserRuleCall_0_1_0_0 = (RuleCall)cPercentageAssignment_0_1_0.eContents().get(0);
		private final RuleCall cPERCENTTerminalRuleCall_0_1_1 = (RuleCall)cGroup_0_1.eContents().get(1);
		private final Keyword cLeftCurlyBracketKeyword_1 = (Keyword)cGroup.eContents().get(1);
		private final Assignment cDeclarationsAssignment_2 = (Assignment)cGroup.eContents().get(2);
		private final RuleCall cDeclarationsCss_declarationParserRuleCall_2_0 = (RuleCall)cDeclarationsAssignment_2.eContents().get(0);
		private final Group cGroup_3 = (Group)cGroup.eContents().get(3);
		private final Keyword cSemicolonKeyword_3_0 = (Keyword)cGroup_3.eContents().get(0);
		private final Assignment cDeclarationsAssignment_3_1 = (Assignment)cGroup_3.eContents().get(1);
		private final RuleCall cDeclarationsCss_declarationParserRuleCall_3_1_0 = (RuleCall)cDeclarationsAssignment_3_1.eContents().get(0);
		private final Keyword cRightCurlyBracketKeyword_4 = (Keyword)cGroup.eContents().get(4);
		
		//keyframe_selector:
		//	(type=Identifier | percentage=Num PERCENT) "{" declarations+=css_declaration? (";" declarations+=css_declaration?)*
		//	"}";
		@Override public ParserRule getRule() { return rule; }

		//(type=Identifier | percentage=Num PERCENT) "{" declarations+=css_declaration? (";" declarations+=css_declaration?)* "}"
		public Group getGroup() { return cGroup; }

		//type=Identifier | percentage=Num PERCENT
		public Alternatives getAlternatives_0() { return cAlternatives_0; }

		//type=Identifier
		public Assignment getTypeAssignment_0_0() { return cTypeAssignment_0_0; }

		//Identifier
		public RuleCall getTypeIdentifierParserRuleCall_0_0_0() { return cTypeIdentifierParserRuleCall_0_0_0; }

		//percentage=Num PERCENT
		public Group getGroup_0_1() { return cGroup_0_1; }

		//percentage=Num
		public Assignment getPercentageAssignment_0_1_0() { return cPercentageAssignment_0_1_0; }

		//Num
		public RuleCall getPercentageNumParserRuleCall_0_1_0_0() { return cPercentageNumParserRuleCall_0_1_0_0; }

		//PERCENT
		public RuleCall getPERCENTTerminalRuleCall_0_1_1() { return cPERCENTTerminalRuleCall_0_1_1; }

		//"{"
		public Keyword getLeftCurlyBracketKeyword_1() { return cLeftCurlyBracketKeyword_1; }

		//declarations+=css_declaration?
		public Assignment getDeclarationsAssignment_2() { return cDeclarationsAssignment_2; }

		//css_declaration
		public RuleCall getDeclarationsCss_declarationParserRuleCall_2_0() { return cDeclarationsCss_declarationParserRuleCall_2_0; }

		//(";" declarations+=css_declaration?)*
		public Group getGroup_3() { return cGroup_3; }

		//";"
		public Keyword getSemicolonKeyword_3_0() { return cSemicolonKeyword_3_0; }

		//declarations+=css_declaration?
		public Assignment getDeclarationsAssignment_3_1() { return cDeclarationsAssignment_3_1; }

		//css_declaration
		public RuleCall getDeclarationsCss_declarationParserRuleCall_3_1_0() { return cDeclarationsCss_declarationParserRuleCall_3_1_0; }

		//"}"
		public Keyword getRightCurlyBracketKeyword_4() { return cRightCurlyBracketKeyword_4; }
	}

	public class RulesetElements extends AbstractParserRuleElementFinder {
		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "ruleset");
		private final Group cGroup = (Group)rule.eContents().get(1);
		private final Assignment cSelectorsAssignment_0 = (Assignment)cGroup.eContents().get(0);
		private final RuleCall cSelectorsSelectorParserRuleCall_0_0 = (RuleCall)cSelectorsAssignment_0.eContents().get(0);
		private final Group cGroup_1 = (Group)cGroup.eContents().get(1);
		private final RuleCall cWSTerminalRuleCall_1_0 = (RuleCall)cGroup_1.eContents().get(0);
		private final RuleCall cCOMMATerminalRuleCall_1_1 = (RuleCall)cGroup_1.eContents().get(1);
		private final Assignment cSelectorsAssignment_1_2 = (Assignment)cGroup_1.eContents().get(2);
		private final RuleCall cSelectorsSelectorParserRuleCall_1_2_0 = (RuleCall)cSelectorsAssignment_1_2.eContents().get(0);
		private final RuleCall cWSTerminalRuleCall_2 = (RuleCall)cGroup.eContents().get(2);
		private final Keyword cLeftCurlyBracketKeyword_3 = (Keyword)cGroup.eContents().get(3);
		private final Group cGroup_4 = (Group)cGroup.eContents().get(4);
		private final Assignment cDeclarationsAssignment_4_0 = (Assignment)cGroup_4.eContents().get(0);
		private final RuleCall cDeclarationsCss_declarationParserRuleCall_4_0_0 = (RuleCall)cDeclarationsAssignment_4_0.eContents().get(0);
		private final Group cGroup_4_1 = (Group)cGroup_4.eContents().get(1);
		private final Keyword cSemicolonKeyword_4_1_0 = (Keyword)cGroup_4_1.eContents().get(0);
		private final Assignment cDeclarationsAssignment_4_1_1 = (Assignment)cGroup_4_1.eContents().get(1);
		private final RuleCall cDeclarationsCss_declarationParserRuleCall_4_1_1_0 = (RuleCall)cDeclarationsAssignment_4_1_1.eContents().get(0);
		private final Keyword cSemicolonKeyword_4_2 = (Keyword)cGroup_4.eContents().get(2);
		private final Keyword cRightCurlyBracketKeyword_5 = (Keyword)cGroup.eContents().get(5);
		
		//ruleset:
		//	selectors+=selector (WS* COMMA selectors+=selector)* WS* "{" (declarations+=css_declaration (";"
		//	declarations+=css_declaration)* ";"?)? "}";
		@Override public ParserRule getRule() { return rule; }

		//selectors+=selector (WS* COMMA selectors+=selector)* WS* "{" (declarations+=css_declaration (";"
		//declarations+=css_declaration)* ";"?)? "}"
		public Group getGroup() { return cGroup; }

		//selectors+=selector
		public Assignment getSelectorsAssignment_0() { return cSelectorsAssignment_0; }

		//selector
		public RuleCall getSelectorsSelectorParserRuleCall_0_0() { return cSelectorsSelectorParserRuleCall_0_0; }

		//(WS* COMMA selectors+=selector)*
		public Group getGroup_1() { return cGroup_1; }

		//WS*
		public RuleCall getWSTerminalRuleCall_1_0() { return cWSTerminalRuleCall_1_0; }

		//COMMA
		public RuleCall getCOMMATerminalRuleCall_1_1() { return cCOMMATerminalRuleCall_1_1; }

		//selectors+=selector
		public Assignment getSelectorsAssignment_1_2() { return cSelectorsAssignment_1_2; }

		//selector
		public RuleCall getSelectorsSelectorParserRuleCall_1_2_0() { return cSelectorsSelectorParserRuleCall_1_2_0; }

		//WS*
		public RuleCall getWSTerminalRuleCall_2() { return cWSTerminalRuleCall_2; }

		//"{"
		public Keyword getLeftCurlyBracketKeyword_3() { return cLeftCurlyBracketKeyword_3; }

		//(declarations+=css_declaration (";" declarations+=css_declaration)* ";"?)?
		public Group getGroup_4() { return cGroup_4; }

		//declarations+=css_declaration
		public Assignment getDeclarationsAssignment_4_0() { return cDeclarationsAssignment_4_0; }

		//css_declaration
		public RuleCall getDeclarationsCss_declarationParserRuleCall_4_0_0() { return cDeclarationsCss_declarationParserRuleCall_4_0_0; }

		//(";" declarations+=css_declaration)*
		public Group getGroup_4_1() { return cGroup_4_1; }

		//";"
		public Keyword getSemicolonKeyword_4_1_0() { return cSemicolonKeyword_4_1_0; }

		//declarations+=css_declaration
		public Assignment getDeclarationsAssignment_4_1_1() { return cDeclarationsAssignment_4_1_1; }

		//css_declaration
		public RuleCall getDeclarationsCss_declarationParserRuleCall_4_1_1_0() { return cDeclarationsCss_declarationParserRuleCall_4_1_1_0; }

		//";"?
		public Keyword getSemicolonKeyword_4_2() { return cSemicolonKeyword_4_2; }

		//"}"
		public Keyword getRightCurlyBracketKeyword_5() { return cRightCurlyBracketKeyword_5; }
	}

	public class SelectorElements extends AbstractParserRuleElementFinder {
		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "selector");
		private final Group cGroup = (Group)rule.eContents().get(1);
		private final Assignment cSimpleselectorsAssignment_0 = (Assignment)cGroup.eContents().get(0);
		private final RuleCall cSimpleselectorsSimple_selectorParserRuleCall_0_0 = (RuleCall)cSimpleselectorsAssignment_0.eContents().get(0);
		private final Alternatives cAlternatives_1 = (Alternatives)cGroup.eContents().get(1);
		private final Group cGroup_1_0 = (Group)cAlternatives_1.eContents().get(0);
		private final Assignment cCombinatorAssignment_1_0_0 = (Assignment)cGroup_1_0.eContents().get(0);
		private final RuleCall cCombinatorCombinatorParserRuleCall_1_0_0_0 = (RuleCall)cCombinatorAssignment_1_0_0.eContents().get(0);
		private final RuleCall cWSTerminalRuleCall_1_0_1 = (RuleCall)cGroup_1_0.eContents().get(1);
		private final Assignment cSelectorAssignment_1_0_2 = (Assignment)cGroup_1_0.eContents().get(2);
		private final RuleCall cSelectorSelectorParserRuleCall_1_0_2_0 = (RuleCall)cSelectorAssignment_1_0_2.eContents().get(0);
		private final Group cGroup_1_1 = (Group)cAlternatives_1.eContents().get(1);
		private final RuleCall cWSTerminalRuleCall_1_1_0 = (RuleCall)cGroup_1_1.eContents().get(0);
		private final Group cGroup_1_1_1 = (Group)cGroup_1_1.eContents().get(1);
		private final Assignment cCombinatorAssignment_1_1_1_0 = (Assignment)cGroup_1_1_1.eContents().get(0);
		private final RuleCall cCombinatorCombinatorParserRuleCall_1_1_1_0_0 = (RuleCall)cCombinatorAssignment_1_1_1_0.eContents().get(0);
		private final RuleCall cWSTerminalRuleCall_1_1_1_1 = (RuleCall)cGroup_1_1_1.eContents().get(1);
		private final Assignment cSelectorAssignment_1_1_2 = (Assignment)cGroup_1_1.eContents().get(2);
		private final RuleCall cSelectorSelectorParserRuleCall_1_1_2_0 = (RuleCall)cSelectorAssignment_1_1_2.eContents().get(0);
		
		//// check simple_selctor cardinality
		//selector hidden(ML_COMMENT):
		//	simpleselectors+=simple_selector (combinator=combinator WS* selector=selector | WS+ (combinator=combinator WS*)?
		//	selector=selector)?;
		@Override public ParserRule getRule() { return rule; }

		//simpleselectors+=simple_selector (combinator=combinator WS* selector=selector | WS+ (combinator=combinator WS*)?
		//selector=selector)?
		public Group getGroup() { return cGroup; }

		//simpleselectors+=simple_selector
		public Assignment getSimpleselectorsAssignment_0() { return cSimpleselectorsAssignment_0; }

		//simple_selector
		public RuleCall getSimpleselectorsSimple_selectorParserRuleCall_0_0() { return cSimpleselectorsSimple_selectorParserRuleCall_0_0; }

		//(combinator=combinator WS* selector=selector | WS+ (combinator=combinator WS*)? selector=selector)?
		public Alternatives getAlternatives_1() { return cAlternatives_1; }

		//combinator=combinator WS* selector=selector
		public Group getGroup_1_0() { return cGroup_1_0; }

		//combinator=combinator
		public Assignment getCombinatorAssignment_1_0_0() { return cCombinatorAssignment_1_0_0; }

		//combinator
		public RuleCall getCombinatorCombinatorParserRuleCall_1_0_0_0() { return cCombinatorCombinatorParserRuleCall_1_0_0_0; }

		//WS*
		public RuleCall getWSTerminalRuleCall_1_0_1() { return cWSTerminalRuleCall_1_0_1; }

		//selector=selector
		public Assignment getSelectorAssignment_1_0_2() { return cSelectorAssignment_1_0_2; }

		//selector
		public RuleCall getSelectorSelectorParserRuleCall_1_0_2_0() { return cSelectorSelectorParserRuleCall_1_0_2_0; }

		//WS+ (combinator=combinator WS*)? selector=selector
		public Group getGroup_1_1() { return cGroup_1_1; }

		//WS+
		public RuleCall getWSTerminalRuleCall_1_1_0() { return cWSTerminalRuleCall_1_1_0; }

		//(combinator=combinator WS*)?
		public Group getGroup_1_1_1() { return cGroup_1_1_1; }

		//combinator=combinator
		public Assignment getCombinatorAssignment_1_1_1_0() { return cCombinatorAssignment_1_1_1_0; }

		//combinator
		public RuleCall getCombinatorCombinatorParserRuleCall_1_1_1_0_0() { return cCombinatorCombinatorParserRuleCall_1_1_1_0_0; }

		//WS*
		public RuleCall getWSTerminalRuleCall_1_1_1_1() { return cWSTerminalRuleCall_1_1_1_1; }

		//selector=selector
		public Assignment getSelectorAssignment_1_1_2() { return cSelectorAssignment_1_1_2; }

		//selector
		public RuleCall getSelectorSelectorParserRuleCall_1_1_2_0() { return cSelectorSelectorParserRuleCall_1_1_2_0; }
	}

	public class SimpleSelectorForNegationElements extends AbstractParserRuleElementFinder {
		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "SimpleSelectorForNegation");
		private final Alternatives cAlternatives = (Alternatives)rule.eContents().get(1);
		private final Group cGroup_0 = (Group)cAlternatives.eContents().get(0);
		private final Alternatives cAlternatives_0_0 = (Alternatives)cGroup_0.eContents().get(0);
		private final Assignment cElementAssignment_0_0_0 = (Assignment)cAlternatives_0_0.eContents().get(0);
		private final RuleCall cElementElementSelectorParserRuleCall_0_0_0_0 = (RuleCall)cElementAssignment_0_0_0.eContents().get(0);
		private final Assignment cUniversalAssignment_0_0_1 = (Assignment)cAlternatives_0_0.eContents().get(1);
		private final RuleCall cUniversalUniversalSelectorParserRuleCall_0_0_1_0 = (RuleCall)cUniversalAssignment_0_0_1.eContents().get(0);
		private final Assignment cSubSelectorsAssignment_0_1 = (Assignment)cGroup_0.eContents().get(1);
		private final RuleCall cSubSelectorsSubSelectorForNegationParserRuleCall_0_1_0 = (RuleCall)cSubSelectorsAssignment_0_1.eContents().get(0);
		private final Assignment cSubSelectorsAssignment_1 = (Assignment)cAlternatives.eContents().get(1);
		private final RuleCall cSubSelectorsSubSelectorForNegationParserRuleCall_1_0 = (RuleCall)cSubSelectorsAssignment_1.eContents().get(0);
		
		//SimpleSelectorForNegation:
		//	(element=ElementSelector | universal=UniversalSelector) subSelectors+=SubSelectorForNegation* | =>
		//	subSelectors+=SubSelectorForNegation+;
		@Override public ParserRule getRule() { return rule; }

		//(element=ElementSelector | universal=UniversalSelector) subSelectors+=SubSelectorForNegation* | =>
		//subSelectors+=SubSelectorForNegation+
		public Alternatives getAlternatives() { return cAlternatives; }

		//(element=ElementSelector | universal=UniversalSelector) subSelectors+=SubSelectorForNegation*
		public Group getGroup_0() { return cGroup_0; }

		//element=ElementSelector | universal=UniversalSelector
		public Alternatives getAlternatives_0_0() { return cAlternatives_0_0; }

		//element=ElementSelector
		public Assignment getElementAssignment_0_0_0() { return cElementAssignment_0_0_0; }

		//ElementSelector
		public RuleCall getElementElementSelectorParserRuleCall_0_0_0_0() { return cElementElementSelectorParserRuleCall_0_0_0_0; }

		//universal=UniversalSelector
		public Assignment getUniversalAssignment_0_0_1() { return cUniversalAssignment_0_0_1; }

		//UniversalSelector
		public RuleCall getUniversalUniversalSelectorParserRuleCall_0_0_1_0() { return cUniversalUniversalSelectorParserRuleCall_0_0_1_0; }

		//subSelectors+=SubSelectorForNegation*
		public Assignment getSubSelectorsAssignment_0_1() { return cSubSelectorsAssignment_0_1; }

		//SubSelectorForNegation
		public RuleCall getSubSelectorsSubSelectorForNegationParserRuleCall_0_1_0() { return cSubSelectorsSubSelectorForNegationParserRuleCall_0_1_0; }

		//=> subSelectors+=SubSelectorForNegation+
		public Assignment getSubSelectorsAssignment_1() { return cSubSelectorsAssignment_1; }

		//SubSelectorForNegation
		public RuleCall getSubSelectorsSubSelectorForNegationParserRuleCall_1_0() { return cSubSelectorsSubSelectorForNegationParserRuleCall_1_0; }
	}

	public class SubSelectorForNegationElements extends AbstractParserRuleElementFinder {
		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "SubSelectorForNegation");
		private final Alternatives cAlternatives = (Alternatives)rule.eContents().get(1);
		private final RuleCall cIdSelectorParserRuleCall_0 = (RuleCall)cAlternatives.eContents().get(0);
		private final RuleCall cClassSelectorParserRuleCall_1 = (RuleCall)cAlternatives.eContents().get(1);
		private final RuleCall cAttributeSelectorParserRuleCall_2 = (RuleCall)cAlternatives.eContents().get(2);
		private final RuleCall cPseudoClassParserRuleCall_3 = (RuleCall)cAlternatives.eContents().get(3);
		
		//SubSelectorForNegation returns CssSelector:
		//	IdSelector | ClassSelector | AttributeSelector | PseudoClass;
		@Override public ParserRule getRule() { return rule; }

		//IdSelector | ClassSelector | AttributeSelector | PseudoClass
		public Alternatives getAlternatives() { return cAlternatives; }

		//IdSelector
		public RuleCall getIdSelectorParserRuleCall_0() { return cIdSelectorParserRuleCall_0; }

		//ClassSelector
		public RuleCall getClassSelectorParserRuleCall_1() { return cClassSelectorParserRuleCall_1; }

		//AttributeSelector
		public RuleCall getAttributeSelectorParserRuleCall_2() { return cAttributeSelectorParserRuleCall_2; }

		//PseudoClass
		public RuleCall getPseudoClassParserRuleCall_3() { return cPseudoClassParserRuleCall_3; }
	}

	public class Simple_selectorElements extends AbstractParserRuleElementFinder {
		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "simple_selector");
		private final Alternatives cAlternatives = (Alternatives)rule.eContents().get(1);
		private final Group cGroup_0 = (Group)cAlternatives.eContents().get(0);
		private final Alternatives cAlternatives_0_0 = (Alternatives)cGroup_0.eContents().get(0);
		private final Assignment cElementAssignment_0_0_0 = (Assignment)cAlternatives_0_0.eContents().get(0);
		private final RuleCall cElementElementSelectorParserRuleCall_0_0_0_0 = (RuleCall)cElementAssignment_0_0_0.eContents().get(0);
		private final Assignment cUniversalAssignment_0_0_1 = (Assignment)cAlternatives_0_0.eContents().get(1);
		private final RuleCall cUniversalUniversalSelectorParserRuleCall_0_0_1_0 = (RuleCall)cUniversalAssignment_0_0_1.eContents().get(0);
		private final Assignment cSubSelectorsAssignment_0_1 = (Assignment)cGroup_0.eContents().get(1);
		private final RuleCall cSubSelectorsSubSelectorParserRuleCall_0_1_0 = (RuleCall)cSubSelectorsAssignment_0_1.eContents().get(0);
		private final Assignment cSubSelectorsAssignment_1 = (Assignment)cAlternatives.eContents().get(1);
		private final RuleCall cSubSelectorsSubSelectorParserRuleCall_1_0 = (RuleCall)cSubSelectorsAssignment_1.eContents().get(0);
		
		//simple_selector hidden(ML_COMMENT):
		//	(element=ElementSelector | universal=UniversalSelector) subSelectors+=SubSelector* | subSelectors+=SubSelector+;
		@Override public ParserRule getRule() { return rule; }

		//(element=ElementSelector | universal=UniversalSelector) subSelectors+=SubSelector* | subSelectors+=SubSelector+
		public Alternatives getAlternatives() { return cAlternatives; }

		//(element=ElementSelector | universal=UniversalSelector) subSelectors+=SubSelector*
		public Group getGroup_0() { return cGroup_0; }

		//element=ElementSelector | universal=UniversalSelector
		public Alternatives getAlternatives_0_0() { return cAlternatives_0_0; }

		//element=ElementSelector
		public Assignment getElementAssignment_0_0_0() { return cElementAssignment_0_0_0; }

		//ElementSelector
		public RuleCall getElementElementSelectorParserRuleCall_0_0_0_0() { return cElementElementSelectorParserRuleCall_0_0_0_0; }

		//universal=UniversalSelector
		public Assignment getUniversalAssignment_0_0_1() { return cUniversalAssignment_0_0_1; }

		//UniversalSelector
		public RuleCall getUniversalUniversalSelectorParserRuleCall_0_0_1_0() { return cUniversalUniversalSelectorParserRuleCall_0_0_1_0; }

		//subSelectors+=SubSelector*
		public Assignment getSubSelectorsAssignment_0_1() { return cSubSelectorsAssignment_0_1; }

		//SubSelector
		public RuleCall getSubSelectorsSubSelectorParserRuleCall_0_1_0() { return cSubSelectorsSubSelectorParserRuleCall_0_1_0; }

		//subSelectors+=SubSelector+
		public Assignment getSubSelectorsAssignment_1() { return cSubSelectorsAssignment_1; }

		//SubSelector
		public RuleCall getSubSelectorsSubSelectorParserRuleCall_1_0() { return cSubSelectorsSubSelectorParserRuleCall_1_0; }
	}

	public class SubSelectorElements extends AbstractParserRuleElementFinder {
		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "SubSelector");
		private final Alternatives cAlternatives = (Alternatives)rule.eContents().get(1);
		private final RuleCall cIdSelectorParserRuleCall_0 = (RuleCall)cAlternatives.eContents().get(0);
		private final RuleCall cClassSelectorParserRuleCall_1 = (RuleCall)cAlternatives.eContents().get(1);
		private final RuleCall cAttributeSelectorParserRuleCall_2 = (RuleCall)cAlternatives.eContents().get(2);
		private final RuleCall cPseudoClassOrFuncParserRuleCall_3 = (RuleCall)cAlternatives.eContents().get(3);
		
		//SubSelector returns CssSelector:
		//	IdSelector | ClassSelector | AttributeSelector | PseudoClassOrFunc;
		@Override public ParserRule getRule() { return rule; }

		//IdSelector | ClassSelector | AttributeSelector | PseudoClassOrFunc
		public Alternatives getAlternatives() { return cAlternatives; }

		//IdSelector
		public RuleCall getIdSelectorParserRuleCall_0() { return cIdSelectorParserRuleCall_0; }

		//ClassSelector
		public RuleCall getClassSelectorParserRuleCall_1() { return cClassSelectorParserRuleCall_1; }

		//AttributeSelector
		public RuleCall getAttributeSelectorParserRuleCall_2() { return cAttributeSelectorParserRuleCall_2; }

		//PseudoClassOrFunc
		public RuleCall getPseudoClassOrFuncParserRuleCall_3() { return cPseudoClassOrFuncParserRuleCall_3; }
	}

	public class AttributeSelectorElements extends AbstractParserRuleElementFinder {
		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "AttributeSelector");
		private final Group cGroup = (Group)rule.eContents().get(1);
		private final Action cAttributeSelectorAction_0 = (Action)cGroup.eContents().get(0);
		private final Keyword cLeftSquareBracketKeyword_1 = (Keyword)cGroup.eContents().get(1);
		private final Assignment cNameAssignment_2 = (Assignment)cGroup.eContents().get(2);
		private final RuleCall cNameIdentifierParserRuleCall_2_0 = (RuleCall)cNameAssignment_2.eContents().get(0);
		private final Group cGroup_3 = (Group)cGroup.eContents().get(3);
		private final Assignment cOpAssignment_3_0 = (Assignment)cGroup_3.eContents().get(0);
		private final Alternatives cOpAlternatives_3_0_0 = (Alternatives)cOpAssignment_3_0.eContents().get(0);
		private final Keyword cOpCircumflexAccentEqualsSignKeyword_3_0_0_0 = (Keyword)cOpAlternatives_3_0_0.eContents().get(0);
		private final Keyword cOpDollarSignEqualsSignKeyword_3_0_0_1 = (Keyword)cOpAlternatives_3_0_0.eContents().get(1);
		private final Keyword cOpAsteriskEqualsSignKeyword_3_0_0_2 = (Keyword)cOpAlternatives_3_0_0.eContents().get(2);
		private final Keyword cOpEqualsSignKeyword_3_0_0_3 = (Keyword)cOpAlternatives_3_0_0.eContents().get(3);
		private final RuleCall cOpINCLUDESTerminalRuleCall_3_0_0_4 = (RuleCall)cOpAlternatives_3_0_0.eContents().get(4);
		private final RuleCall cOpDASHMATCHTerminalRuleCall_3_0_0_5 = (RuleCall)cOpAlternatives_3_0_0.eContents().get(5);
		private final Assignment cValueAssignment_3_1 = (Assignment)cGroup_3.eContents().get(1);
		private final Alternatives cValueAlternatives_3_1_0 = (Alternatives)cValueAssignment_3_1.eContents().get(0);
		private final RuleCall cValueIdentifierParserRuleCall_3_1_0_0 = (RuleCall)cValueAlternatives_3_1_0.eContents().get(0);
		private final RuleCall cValueCSSSTRINGTerminalRuleCall_3_1_0_1 = (RuleCall)cValueAlternatives_3_1_0.eContents().get(1);
		private final Keyword cRightSquareBracketKeyword_4 = (Keyword)cGroup.eContents().get(4);
		
		//AttributeSelector returns CssSelector:
		//	{AttributeSelector} "[" name=Identifier (op=("^=" | "$=" | "*=" | "=" | INCLUDES | DASHMATCH) value=(Identifier |
		//	CSSSTRING))? "]";
		@Override public ParserRule getRule() { return rule; }

		//{AttributeSelector} "[" name=Identifier (op=("^=" | "$=" | "*=" | "=" | INCLUDES | DASHMATCH) value=(Identifier |
		//CSSSTRING))? "]"
		public Group getGroup() { return cGroup; }

		//{AttributeSelector}
		public Action getAttributeSelectorAction_0() { return cAttributeSelectorAction_0; }

		//"["
		public Keyword getLeftSquareBracketKeyword_1() { return cLeftSquareBracketKeyword_1; }

		//name=Identifier
		public Assignment getNameAssignment_2() { return cNameAssignment_2; }

		//Identifier
		public RuleCall getNameIdentifierParserRuleCall_2_0() { return cNameIdentifierParserRuleCall_2_0; }

		//(op=("^=" | "$=" | "*=" | "=" | INCLUDES | DASHMATCH) value=(Identifier | CSSSTRING))?
		public Group getGroup_3() { return cGroup_3; }

		//op=("^=" | "$=" | "*=" | "=" | INCLUDES | DASHMATCH)
		public Assignment getOpAssignment_3_0() { return cOpAssignment_3_0; }

		//"^=" | "$=" | "*=" | "=" | INCLUDES | DASHMATCH
		public Alternatives getOpAlternatives_3_0_0() { return cOpAlternatives_3_0_0; }

		//"^="
		public Keyword getOpCircumflexAccentEqualsSignKeyword_3_0_0_0() { return cOpCircumflexAccentEqualsSignKeyword_3_0_0_0; }

		//"$="
		public Keyword getOpDollarSignEqualsSignKeyword_3_0_0_1() { return cOpDollarSignEqualsSignKeyword_3_0_0_1; }

		//"*="
		public Keyword getOpAsteriskEqualsSignKeyword_3_0_0_2() { return cOpAsteriskEqualsSignKeyword_3_0_0_2; }

		//"="
		public Keyword getOpEqualsSignKeyword_3_0_0_3() { return cOpEqualsSignKeyword_3_0_0_3; }

		//INCLUDES
		public RuleCall getOpINCLUDESTerminalRuleCall_3_0_0_4() { return cOpINCLUDESTerminalRuleCall_3_0_0_4; }

		//DASHMATCH
		public RuleCall getOpDASHMATCHTerminalRuleCall_3_0_0_5() { return cOpDASHMATCHTerminalRuleCall_3_0_0_5; }

		//value=(Identifier | CSSSTRING)
		public Assignment getValueAssignment_3_1() { return cValueAssignment_3_1; }

		//Identifier | CSSSTRING
		public Alternatives getValueAlternatives_3_1_0() { return cValueAlternatives_3_1_0; }

		//Identifier
		public RuleCall getValueIdentifierParserRuleCall_3_1_0_0() { return cValueIdentifierParserRuleCall_3_1_0_0; }

		//CSSSTRING
		public RuleCall getValueCSSSTRINGTerminalRuleCall_3_1_0_1() { return cValueCSSSTRINGTerminalRuleCall_3_1_0_1; }

		//"]"
		public Keyword getRightSquareBracketKeyword_4() { return cRightSquareBracketKeyword_4; }
	}

	public class ClassSelectorElements extends AbstractParserRuleElementFinder {
		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "ClassSelector");
		private final Group cGroup = (Group)rule.eContents().get(1);
		private final Action cClassSelectorAction_0 = (Action)cGroup.eContents().get(0);
		private final Keyword cFullStopKeyword_1 = (Keyword)cGroup.eContents().get(1);
		private final Assignment cNameAssignment_2 = (Assignment)cGroup.eContents().get(2);
		private final RuleCall cNameIdentifierParserRuleCall_2_0 = (RuleCall)cNameAssignment_2.eContents().get(0);
		
		//ClassSelector:
		//	{ClassSelector} "." name=Identifier;
		@Override public ParserRule getRule() { return rule; }

		//{ClassSelector} "." name=Identifier
		public Group getGroup() { return cGroup; }

		//{ClassSelector}
		public Action getClassSelectorAction_0() { return cClassSelectorAction_0; }

		//"."
		public Keyword getFullStopKeyword_1() { return cFullStopKeyword_1; }

		//name=Identifier
		public Assignment getNameAssignment_2() { return cNameAssignment_2; }

		//Identifier
		public RuleCall getNameIdentifierParserRuleCall_2_0() { return cNameIdentifierParserRuleCall_2_0; }
	}

	public class ElementSelectorElements extends AbstractParserRuleElementFinder {
		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "ElementSelector");
		private final Group cGroup = (Group)rule.eContents().get(1);
		private final Action cElementSelectorAction_0 = (Action)cGroup.eContents().get(0);
		private final Assignment cNameAssignment_1 = (Assignment)cGroup.eContents().get(1);
		private final RuleCall cNameIdentifierParserRuleCall_1_0 = (RuleCall)cNameAssignment_1.eContents().get(0);
		
		//ElementSelector:
		//	{ElementSelector} name=Identifier;
		@Override public ParserRule getRule() { return rule; }

		//{ElementSelector} name=Identifier
		public Group getGroup() { return cGroup; }

		//{ElementSelector}
		public Action getElementSelectorAction_0() { return cElementSelectorAction_0; }

		//name=Identifier
		public Assignment getNameAssignment_1() { return cNameAssignment_1; }

		//Identifier
		public RuleCall getNameIdentifierParserRuleCall_1_0() { return cNameIdentifierParserRuleCall_1_0; }
	}

	public class UniversalSelectorElements extends AbstractParserRuleElementFinder {
		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "UniversalSelector");
		private final Group cGroup = (Group)rule.eContents().get(1);
		private final Action cUniversalSelectorAction_0 = (Action)cGroup.eContents().get(0);
		private final Assignment cNamespaceAssignment_1 = (Assignment)cGroup.eContents().get(1);
		private final RuleCall cNamespaceCss_namespace_prefixParserRuleCall_1_0 = (RuleCall)cNamespaceAssignment_1.eContents().get(0);
		private final Keyword cAsteriskKeyword_2 = (Keyword)cGroup.eContents().get(2);
		
		//UniversalSelector:
		//	{UniversalSelector} namespace=css_namespace_prefix? "*";
		@Override public ParserRule getRule() { return rule; }

		//{UniversalSelector} namespace=css_namespace_prefix? "*"
		public Group getGroup() { return cGroup; }

		//{UniversalSelector}
		public Action getUniversalSelectorAction_0() { return cUniversalSelectorAction_0; }

		//namespace=css_namespace_prefix?
		public Assignment getNamespaceAssignment_1() { return cNamespaceAssignment_1; }

		//css_namespace_prefix
		public RuleCall getNamespaceCss_namespace_prefixParserRuleCall_1_0() { return cNamespaceCss_namespace_prefixParserRuleCall_1_0; }

		//"*"
		public Keyword getAsteriskKeyword_2() { return cAsteriskKeyword_2; }
	}

	public class IdSelectorElements extends AbstractParserRuleElementFinder {
		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "IdSelector");
		private final Group cGroup = (Group)rule.eContents().get(1);
		private final Action cIdSelectorAction_0 = (Action)cGroup.eContents().get(0);
		private final RuleCall cHASHMARKTerminalRuleCall_1 = (RuleCall)cGroup.eContents().get(1);
		private final Assignment cNameAssignment_2 = (Assignment)cGroup.eContents().get(2);
		private final RuleCall cNameIdentifierParserRuleCall_2_0 = (RuleCall)cNameAssignment_2.eContents().get(0);
		
		//IdSelector:
		//	{IdSelector} HASHMARK name=Identifier;
		@Override public ParserRule getRule() { return rule; }

		//{IdSelector} HASHMARK name=Identifier
		public Group getGroup() { return cGroup; }

		//{IdSelector}
		public Action getIdSelectorAction_0() { return cIdSelectorAction_0; }

		//HASHMARK
		public RuleCall getHASHMARKTerminalRuleCall_1() { return cHASHMARKTerminalRuleCall_1; }

		//name=Identifier
		public Assignment getNameAssignment_2() { return cNameAssignment_2; }

		//Identifier
		public RuleCall getNameIdentifierParserRuleCall_2_0() { return cNameIdentifierParserRuleCall_2_0; }
	}

	public class Css_namespace_prefixElements extends AbstractParserRuleElementFinder {
		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "css_namespace_prefix");
		private final Group cGroup = (Group)rule.eContents().get(1);
		private final Alternatives cAlternatives_0 = (Alternatives)cGroup.eContents().get(0);
		private final RuleCall cIdentifierParserRuleCall_0_0 = (RuleCall)cAlternatives_0.eContents().get(0);
		private final Keyword cAsteriskKeyword_0_1 = (Keyword)cAlternatives_0.eContents().get(1);
		private final Keyword cVerticalLineKeyword_1 = (Keyword)cGroup.eContents().get(1);
		
		//css_namespace_prefix:
		//	(Identifier | "*")? "|";
		@Override public ParserRule getRule() { return rule; }

		//(Identifier | "*")? "|"
		public Group getGroup() { return cGroup; }

		//(Identifier | "*")?
		public Alternatives getAlternatives_0() { return cAlternatives_0; }

		//Identifier
		public RuleCall getIdentifierParserRuleCall_0_0() { return cIdentifierParserRuleCall_0_0; }

		//"*"
		public Keyword getAsteriskKeyword_0_1() { return cAsteriskKeyword_0_1; }

		//"|"
		public Keyword getVerticalLineKeyword_1() { return cVerticalLineKeyword_1; }
	}

	public class Css_declarationElements extends AbstractParserRuleElementFinder {
		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "css_declaration");
		private final Group cGroup = (Group)rule.eContents().get(1);
		private final RuleCall cWSTerminalRuleCall_0 = (RuleCall)cGroup.eContents().get(0);
		private final Assignment cPropertyAssignment_1 = (Assignment)cGroup.eContents().get(1);
		private final RuleCall cPropertyCss_propertyParserRuleCall_1_0 = (RuleCall)cPropertyAssignment_1.eContents().get(0);
		private final RuleCall cWSTerminalRuleCall_2 = (RuleCall)cGroup.eContents().get(2);
		private final RuleCall cCOLONTerminalRuleCall_3 = (RuleCall)cGroup.eContents().get(3);
		private final Assignment cValueTokensAssignment_4 = (Assignment)cGroup.eContents().get(4);
		private final RuleCall cValueTokensCssTokParserRuleCall_4_0 = (RuleCall)cValueTokensAssignment_4.eContents().get(0);
		private final Assignment cImportantAssignment_5 = (Assignment)cGroup.eContents().get(5);
		private final RuleCall cImportantIMPORTANT_SYMTerminalRuleCall_5_0 = (RuleCall)cImportantAssignment_5.eContents().get(0);
		
		//css_declaration hidden(ML_COMMENT):
		//	WS* property=css_property WS* COLON valueTokens+=CssTok+ important?=IMPORTANT_SYM?;
		@Override public ParserRule getRule() { return rule; }

		//WS* property=css_property WS* COLON valueTokens+=CssTok+ important?=IMPORTANT_SYM?
		public Group getGroup() { return cGroup; }

		//WS*
		public RuleCall getWSTerminalRuleCall_0() { return cWSTerminalRuleCall_0; }

		//property=css_property
		public Assignment getPropertyAssignment_1() { return cPropertyAssignment_1; }

		//css_property
		public RuleCall getPropertyCss_propertyParserRuleCall_1_0() { return cPropertyCss_propertyParserRuleCall_1_0; }

		//WS*
		public RuleCall getWSTerminalRuleCall_2() { return cWSTerminalRuleCall_2; }

		//COLON
		public RuleCall getCOLONTerminalRuleCall_3() { return cCOLONTerminalRuleCall_3; }

		//valueTokens+=CssTok+
		public Assignment getValueTokensAssignment_4() { return cValueTokensAssignment_4; }

		//CssTok
		public RuleCall getValueTokensCssTokParserRuleCall_4_0() { return cValueTokensCssTokParserRuleCall_4_0; }

		//important?=IMPORTANT_SYM?
		public Assignment getImportantAssignment_5() { return cImportantAssignment_5; }

		//IMPORTANT_SYM
		public RuleCall getImportantIMPORTANT_SYMTerminalRuleCall_5_0() { return cImportantIMPORTANT_SYMTerminalRuleCall_5_0; }
	}

	public class Css_propertyElements extends AbstractParserRuleElementFinder {
		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "css_property");
		private final Group cGroup = (Group)rule.eContents().get(1);
		private final Action cCss_propertyAction_0 = (Action)cGroup.eContents().get(0);
		private final Assignment cNameAssignment_1 = (Assignment)cGroup.eContents().get(1);
		private final RuleCall cNameValidPropertyIdentParserRuleCall_1_0 = (RuleCall)cNameAssignment_1.eContents().get(0);
		
		//css_property:
		//	{css_property} name=ValidPropertyIdent;
		@Override public ParserRule getRule() { return rule; }

		//{css_property} name=ValidPropertyIdent
		public Group getGroup() { return cGroup; }

		//{css_property}
		public Action getCss_propertyAction_0() { return cCss_propertyAction_0; }

		//name=ValidPropertyIdent
		public Assignment getNameAssignment_1() { return cNameAssignment_1; }

		//ValidPropertyIdent
		public RuleCall getNameValidPropertyIdentParserRuleCall_1_0() { return cNameValidPropertyIdentParserRuleCall_1_0; }
	}

	public class ValidPropertyIdentElements extends AbstractParserRuleElementFinder {
		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "ValidPropertyIdent");
		private final RuleCall cIdentifierParserRuleCall = (RuleCall)rule.eContents().get(1);
		
		//ValidPropertyIdent:
		//	Identifier;
		@Override public ParserRule getRule() { return rule; }

		//Identifier
		public RuleCall getIdentifierParserRuleCall() { return cIdentifierParserRuleCall; }
	}

	public class PseudoClassOrFuncElements extends AbstractParserRuleElementFinder {
		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "PseudoClassOrFunc");
		private final Alternatives cAlternatives = (Alternatives)rule.eContents().get(1);
		private final RuleCall cPseudoClassParserRuleCall_0 = (RuleCall)cAlternatives.eContents().get(0);
		private final RuleCall cPseudoClassFunctionParserRuleCall_1 = (RuleCall)cAlternatives.eContents().get(1);
		
		//PseudoClassOrFunc:
		//	PseudoClass | PseudoClassFunction;
		@Override public ParserRule getRule() { return rule; }

		//PseudoClass | PseudoClassFunction
		public Alternatives getAlternatives() { return cAlternatives; }

		//PseudoClass
		public RuleCall getPseudoClassParserRuleCall_0() { return cPseudoClassParserRuleCall_0; }

		//PseudoClassFunction
		public RuleCall getPseudoClassFunctionParserRuleCall_1() { return cPseudoClassFunctionParserRuleCall_1; }
	}

	public class PseudoClassElements extends AbstractParserRuleElementFinder {
		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "PseudoClass");
		private final Group cGroup = (Group)rule.eContents().get(1);
		private final RuleCall cCOLONTerminalRuleCall_0 = (RuleCall)cGroup.eContents().get(0);
		private final RuleCall cCOLONTerminalRuleCall_1 = (RuleCall)cGroup.eContents().get(1);
		private final RuleCall cPseudoClassNameParserRuleCall_2 = (RuleCall)cGroup.eContents().get(2);
		
		//PseudoClass:
		//	COLON COLON? PseudoClassName;
		@Override public ParserRule getRule() { return rule; }

		//COLON COLON? PseudoClassName
		public Group getGroup() { return cGroup; }

		//COLON
		public RuleCall getCOLONTerminalRuleCall_0() { return cCOLONTerminalRuleCall_0; }

		//COLON?
		public RuleCall getCOLONTerminalRuleCall_1() { return cCOLONTerminalRuleCall_1; }

		//PseudoClassName
		public RuleCall getPseudoClassNameParserRuleCall_2() { return cPseudoClassNameParserRuleCall_2; }
	}

	public class PseudoClassNameElements extends AbstractParserRuleElementFinder {
		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "PseudoClassName");
		private final Assignment cNameAssignment = (Assignment)rule.eContents().get(1);
		private final RuleCall cNameIdentifierParserRuleCall_0 = (RuleCall)cNameAssignment.eContents().get(0);
		
		//PseudoClassName:
		//	name=Identifier;
		@Override public ParserRule getRule() { return rule; }

		//name=Identifier
		public Assignment getNameAssignment() { return cNameAssignment; }

		//Identifier
		public RuleCall getNameIdentifierParserRuleCall_0() { return cNameIdentifierParserRuleCall_0; }
	}

	public class PseudoClassFunctionElements extends AbstractParserRuleElementFinder {
		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "PseudoClassFunction");
		private final Alternatives cAlternatives = (Alternatives)rule.eContents().get(1);
		private final Group cGroup_0 = (Group)cAlternatives.eContents().get(0);
		private final Assignment cNotAssignment_0_0 = (Assignment)cGroup_0.eContents().get(0);
		private final RuleCall cNotNotFunctionCallParserRuleCall_0_0_0 = (RuleCall)cNotAssignment_0_0.eContents().get(0);
		private final Assignment cParamSelectorAssignment_0_1 = (Assignment)cGroup_0.eContents().get(1);
		private final RuleCall cParamSelectorSimpleSelectorForNegationParserRuleCall_0_1_0 = (RuleCall)cParamSelectorAssignment_0_1.eContents().get(0);
		private final Keyword cRightParenthesisKeyword_0_2 = (Keyword)cGroup_0.eContents().get(2);
		private final Group cGroup_1 = (Group)cAlternatives.eContents().get(1);
		private final RuleCall cCOLONTerminalRuleCall_1_0 = (RuleCall)cGroup_1.eContents().get(0);
		private final Assignment cNameAssignment_1_1 = (Assignment)cGroup_1.eContents().get(1);
		private final RuleCall cNameIdentifierParserRuleCall_1_1_0 = (RuleCall)cNameAssignment_1_1.eContents().get(0);
		private final Keyword cLeftParenthesisKeyword_1_2 = (Keyword)cGroup_1.eContents().get(2);
		private final Assignment cParamsAssignment_1_3 = (Assignment)cGroup_1.eContents().get(3);
		private final RuleCall cParamsCssTokParserRuleCall_1_3_0 = (RuleCall)cParamsAssignment_1_3.eContents().get(0);
		private final Keyword cRightParenthesisKeyword_1_4 = (Keyword)cGroup_1.eContents().get(4);
		
		//PseudoClassFunction:
		//	not?=NotFunctionCall paramSelector=SimpleSelectorForNegation ")" | COLON name=Identifier "(" params+=CssTok* ")";
		@Override public ParserRule getRule() { return rule; }

		//not?=NotFunctionCall paramSelector=SimpleSelectorForNegation ")" | COLON name=Identifier "(" params+=CssTok* ")"
		public Alternatives getAlternatives() { return cAlternatives; }

		//not?=NotFunctionCall paramSelector=SimpleSelectorForNegation ")"
		public Group getGroup_0() { return cGroup_0; }

		//not?=NotFunctionCall
		public Assignment getNotAssignment_0_0() { return cNotAssignment_0_0; }

		//NotFunctionCall
		public RuleCall getNotNotFunctionCallParserRuleCall_0_0_0() { return cNotNotFunctionCallParserRuleCall_0_0_0; }

		//paramSelector=SimpleSelectorForNegation
		public Assignment getParamSelectorAssignment_0_1() { return cParamSelectorAssignment_0_1; }

		//SimpleSelectorForNegation
		public RuleCall getParamSelectorSimpleSelectorForNegationParserRuleCall_0_1_0() { return cParamSelectorSimpleSelectorForNegationParserRuleCall_0_1_0; }

		//")"
		public Keyword getRightParenthesisKeyword_0_2() { return cRightParenthesisKeyword_0_2; }

		//COLON name=Identifier "(" params+=CssTok* ")"
		public Group getGroup_1() { return cGroup_1; }

		//COLON
		public RuleCall getCOLONTerminalRuleCall_1_0() { return cCOLONTerminalRuleCall_1_0; }

		//name=Identifier
		public Assignment getNameAssignment_1_1() { return cNameAssignment_1_1; }

		//Identifier
		public RuleCall getNameIdentifierParserRuleCall_1_1_0() { return cNameIdentifierParserRuleCall_1_1_0; }

		//"("
		public Keyword getLeftParenthesisKeyword_1_2() { return cLeftParenthesisKeyword_1_2; }

		//params+=CssTok*
		public Assignment getParamsAssignment_1_3() { return cParamsAssignment_1_3; }

		//CssTok
		public RuleCall getParamsCssTokParserRuleCall_1_3_0() { return cParamsCssTokParserRuleCall_1_3_0; }

		//")"
		public Keyword getRightParenthesisKeyword_1_4() { return cRightParenthesisKeyword_1_4; }
	}

	public class NotFunctionCallElements extends AbstractParserRuleElementFinder {
		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "NotFunctionCall");
		private final Group cGroup = (Group)rule.eContents().get(1);
		private final RuleCall cCOLONTerminalRuleCall_0 = (RuleCall)cGroup.eContents().get(0);
		private final Keyword cNotKeyword_1 = (Keyword)cGroup.eContents().get(1);
		
		//NotFunctionCall hidden():
		//	COLON "not(";
		@Override public ParserRule getRule() { return rule; }

		//COLON "not("
		public Group getGroup() { return cGroup; }

		//COLON
		public RuleCall getCOLONTerminalRuleCall_0() { return cCOLONTerminalRuleCall_0; }

		//"not("
		public Keyword getNotKeyword_1() { return cNotKeyword_1; }
	}

	public class CombinatorElements extends AbstractParserRuleElementFinder {
		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "combinator");
		private final Alternatives cAlternatives = (Alternatives)rule.eContents().get(1);
		private final RuleCall cPLUSTerminalRuleCall_0 = (RuleCall)cAlternatives.eContents().get(0);
		private final Keyword cGreaterThanSignKeyword_1 = (Keyword)cAlternatives.eContents().get(1);
		private final Keyword cTildeKeyword_2 = (Keyword)cAlternatives.eContents().get(2);
		
		//combinator:
		//	PLUS | ">" | "~";
		@Override public ParserRule getRule() { return rule; }

		//PLUS | ">" | "~"
		public Alternatives getAlternatives() { return cAlternatives; }

		//PLUS
		public RuleCall getPLUSTerminalRuleCall_0() { return cPLUSTerminalRuleCall_0; }

		//">"
		public Keyword getGreaterThanSignKeyword_1() { return cGreaterThanSignKeyword_1; }

		//"~"
		public Keyword getTildeKeyword_2() { return cTildeKeyword_2; }
	}

	public class OperatorElements extends AbstractParserRuleElementFinder {
		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "operator");
		private final Alternatives cAlternatives = (Alternatives)rule.eContents().get(1);
		private final Keyword cSolidusKeyword_0 = (Keyword)cAlternatives.eContents().get(0);
		private final RuleCall cCOMMATerminalRuleCall_1 = (RuleCall)cAlternatives.eContents().get(1);
		
		//operator:
		//	"/" | COMMA;
		@Override public ParserRule getRule() { return rule; }

		//"/" | COMMA
		public Alternatives getAlternatives() { return cAlternatives; }

		//"/"
		public Keyword getSolidusKeyword_0() { return cSolidusKeyword_0; }

		//COMMA
		public RuleCall getCOMMATerminalRuleCall_1() { return cCOMMATerminalRuleCall_1; }
	}

	public class Unary_operatorElements extends AbstractParserRuleElementFinder {
		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "unary_operator");
		private final Alternatives cAlternatives = (Alternatives)rule.eContents().get(1);
		private final RuleCall cDASHTerminalRuleCall_0 = (RuleCall)cAlternatives.eContents().get(0);
		private final RuleCall cPLUSTerminalRuleCall_1 = (RuleCall)cAlternatives.eContents().get(1);
		
		//unary_operator:
		//	DASH | PLUS;
		@Override public ParserRule getRule() { return rule; }

		//DASH | PLUS
		public Alternatives getAlternatives() { return cAlternatives; }

		//DASH
		public RuleCall getDASHTerminalRuleCall_0() { return cDASHTerminalRuleCall_0; }

		//PLUS
		public RuleCall getPLUSTerminalRuleCall_1() { return cPLUSTerminalRuleCall_1; }
	}

	public class SymbolTokElements extends AbstractParserRuleElementFinder {
		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "SymbolTok");
		private final Group cGroup = (Group)rule.eContents().get(1);
		private final Action cSymbolTokAction_0 = (Action)cGroup.eContents().get(0);
		private final Assignment cSymbolAssignment_1 = (Assignment)cGroup.eContents().get(1);
		private final Alternatives cSymbolAlternatives_1_0 = (Alternatives)cSymbolAssignment_1.eContents().get(0);
		private final RuleCall cSymbolCOMMATerminalRuleCall_1_0_0 = (RuleCall)cSymbolAlternatives_1_0.eContents().get(0);
		private final RuleCall cSymbolPERCENTTerminalRuleCall_1_0_1 = (RuleCall)cSymbolAlternatives_1_0.eContents().get(1);
		
		//SymbolTok returns CssTok:
		//	{SymbolTok} symbol=(COMMA | PERCENT);
		@Override public ParserRule getRule() { return rule; }

		//{SymbolTok} symbol=(COMMA | PERCENT)
		public Group getGroup() { return cGroup; }

		//{SymbolTok}
		public Action getSymbolTokAction_0() { return cSymbolTokAction_0; }

		//symbol=(COMMA | PERCENT)
		public Assignment getSymbolAssignment_1() { return cSymbolAssignment_1; }

		//COMMA | PERCENT
		public Alternatives getSymbolAlternatives_1_0() { return cSymbolAlternatives_1_0; }

		//COMMA
		public RuleCall getSymbolCOMMATerminalRuleCall_1_0_0() { return cSymbolCOMMATerminalRuleCall_1_0_0; }

		//PERCENT
		public RuleCall getSymbolPERCENTTerminalRuleCall_1_0_1() { return cSymbolPERCENTTerminalRuleCall_1_0_1; }
	}

	public class WSTokElements extends AbstractParserRuleElementFinder {
		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "WSTok");
		private final Group cGroup = (Group)rule.eContents().get(1);
		private final Action cWSTokAction_0 = (Action)cGroup.eContents().get(0);
		private final RuleCall cWSTerminalRuleCall_1 = (RuleCall)cGroup.eContents().get(1);
		
		//WSTok returns CssTok:
		//	{WSTok} WS;
		@Override public ParserRule getRule() { return rule; }

		//{WSTok} WS
		public Group getGroup() { return cGroup; }

		//{WSTok}
		public Action getWSTokAction_0() { return cWSTokAction_0; }

		//WS
		public RuleCall getWSTerminalRuleCall_1() { return cWSTerminalRuleCall_1; }
	}

	public class StringTokElements extends AbstractParserRuleElementFinder {
		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "StringTok");
		private final Group cGroup = (Group)rule.eContents().get(1);
		private final Action cStringTokAction_0 = (Action)cGroup.eContents().get(0);
		private final Assignment cValueAssignment_1 = (Assignment)cGroup.eContents().get(1);
		private final RuleCall cValueCSSSTRINGTerminalRuleCall_1_0 = (RuleCall)cValueAssignment_1.eContents().get(0);
		
		//StringTok returns CssTok:
		//	{StringTok} value=CSSSTRING;
		@Override public ParserRule getRule() { return rule; }

		//{StringTok} value=CSSSTRING
		public Group getGroup() { return cGroup; }

		//{StringTok}
		public Action getStringTokAction_0() { return cStringTokAction_0; }

		//value=CSSSTRING
		public Assignment getValueAssignment_1() { return cValueAssignment_1; }

		//CSSSTRING
		public RuleCall getValueCSSSTRINGTerminalRuleCall_1_0() { return cValueCSSSTRINGTerminalRuleCall_1_0; }
	}

	public class NumberTokElements extends AbstractParserRuleElementFinder {
		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "NumberTok");
		private final Group cGroup = (Group)rule.eContents().get(1);
		private final Action cNumberTokAction_0 = (Action)cGroup.eContents().get(0);
		private final Assignment cValAssignment_1 = (Assignment)cGroup.eContents().get(1);
		private final RuleCall cValNumParserRuleCall_1_0 = (RuleCall)cValAssignment_1.eContents().get(0);
		
		////	{NumberTok} DASH? ( ONE_INT+ | ONE_INT* '.' => ONE_INT+)
		////	{NumberTok} val=Integer | Real
		////sign=DASH? ( ival=Integer | dval=Real)
		//NumberTok returns CssTok hidden():
		//	{NumberTok} val=Num;
		@Override public ParserRule getRule() { return rule; }

		//{NumberTok} val=Num
		public Group getGroup() { return cGroup; }

		//{NumberTok}
		public Action getNumberTokAction_0() { return cNumberTokAction_0; }

		//val=Num
		public Assignment getValAssignment_1() { return cValAssignment_1; }

		//Num
		public RuleCall getValNumParserRuleCall_1_0() { return cValNumParserRuleCall_1_0; }
	}

	public class UrlTokElements extends AbstractParserRuleElementFinder {
		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "UrlTok");
		private final Group cGroup = (Group)rule.eContents().get(1);
		private final Action cUrlTokAction_0 = (Action)cGroup.eContents().get(0);
		private final Assignment cUrlAssignment_1 = (Assignment)cGroup.eContents().get(1);
		private final RuleCall cUrlURLTypeParserRuleCall_1_0 = (RuleCall)cUrlAssignment_1.eContents().get(0);
		
		//UrlTok returns CssTok:
		//	{UrlTok} url=URLType;
		@Override public ParserRule getRule() { return rule; }

		//{UrlTok} url=URLType
		public Group getGroup() { return cGroup; }

		//{UrlTok}
		public Action getUrlTokAction_0() { return cUrlTokAction_0; }

		//url=URLType
		public Assignment getUrlAssignment_1() { return cUrlAssignment_1; }

		//URLType
		public RuleCall getUrlURLTypeParserRuleCall_1_0() { return cUrlURLTypeParserRuleCall_1_0; }
	}

	public class ColorTokElements extends AbstractParserRuleElementFinder {
		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "ColorTok");
		private final Group cGroup = (Group)rule.eContents().get(1);
		private final Action cColorTokAction_0 = (Action)cGroup.eContents().get(0);
		private final Assignment cValueAssignment_1 = (Assignment)cGroup.eContents().get(1);
		private final RuleCall cValueHexParserRuleCall_1_0 = (RuleCall)cValueAssignment_1.eContents().get(0);
		
		//ColorTok returns CssTok hidden():
		//	{ColorTok} value=Hex;
		@Override public ParserRule getRule() { return rule; }

		//{ColorTok} value=Hex
		public Group getGroup() { return cGroup; }

		//{ColorTok}
		public Action getColorTokAction_0() { return cColorTokAction_0; }

		//value=Hex
		public Assignment getValueAssignment_1() { return cValueAssignment_1; }

		//Hex
		public RuleCall getValueHexParserRuleCall_1_0() { return cValueHexParserRuleCall_1_0; }
	}

	public class IdentifierOrFuncTokElements extends AbstractParserRuleElementFinder {
		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "IdentifierOrFuncTok");
		private final Group cGroup = (Group)rule.eContents().get(1);
		private final Action cIdentifierTokAction_0 = (Action)cGroup.eContents().get(0);
		private final Assignment cNameAssignment_1 = (Assignment)cGroup.eContents().get(1);
		private final RuleCall cNameIdentifierParserRuleCall_1_0 = (RuleCall)cNameAssignment_1.eContents().get(0);
		private final Group cGroup_2 = (Group)cGroup.eContents().get(2);
		private final Action cFuncTokNameAction_2_0 = (Action)cGroup_2.eContents().get(0);
		private final Keyword cLeftParenthesisKeyword_2_1 = (Keyword)cGroup_2.eContents().get(1);
		private final Assignment cParamsAssignment_2_2 = (Assignment)cGroup_2.eContents().get(2);
		private final RuleCall cParamsCssTokParserRuleCall_2_2_0 = (RuleCall)cParamsAssignment_2_2.eContents().get(0);
		private final Keyword cRightParenthesisKeyword_2_3 = (Keyword)cGroup_2.eContents().get(3);
		
		//IdentifierOrFuncTok returns CssTok hidden(ML_COMMENT):
		//	{IdentifierTok} name=Identifier ({FuncTok.name=current} "(" params+=CssTok+ ")")?;
		@Override public ParserRule getRule() { return rule; }

		//{IdentifierTok} name=Identifier ({FuncTok.name=current} "(" params+=CssTok+ ")")?
		public Group getGroup() { return cGroup; }

		//{IdentifierTok}
		public Action getIdentifierTokAction_0() { return cIdentifierTokAction_0; }

		//name=Identifier
		public Assignment getNameAssignment_1() { return cNameAssignment_1; }

		//Identifier
		public RuleCall getNameIdentifierParserRuleCall_1_0() { return cNameIdentifierParserRuleCall_1_0; }

		//({FuncTok.name=current} "(" params+=CssTok+ ")")?
		public Group getGroup_2() { return cGroup_2; }

		//{FuncTok.name=current}
		public Action getFuncTokNameAction_2_0() { return cFuncTokNameAction_2_0; }

		//"("
		public Keyword getLeftParenthesisKeyword_2_1() { return cLeftParenthesisKeyword_2_1; }

		//params+=CssTok+
		public Assignment getParamsAssignment_2_2() { return cParamsAssignment_2_2; }

		//CssTok
		public RuleCall getParamsCssTokParserRuleCall_2_2_0() { return cParamsCssTokParserRuleCall_2_2_0; }

		//")"
		public Keyword getRightParenthesisKeyword_2_3() { return cRightParenthesisKeyword_2_3; }
	}

	public class CssTokElements extends AbstractParserRuleElementFinder {
		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "CssTok");
		private final Alternatives cAlternatives = (Alternatives)rule.eContents().get(1);
		private final RuleCall cIdentifierOrFuncTokParserRuleCall_0 = (RuleCall)cAlternatives.eContents().get(0);
		private final RuleCall cSymbolTokParserRuleCall_1 = (RuleCall)cAlternatives.eContents().get(1);
		private final RuleCall cWSTokParserRuleCall_2 = (RuleCall)cAlternatives.eContents().get(2);
		private final RuleCall cStringTokParserRuleCall_3 = (RuleCall)cAlternatives.eContents().get(3);
		private final RuleCall cNumberTokParserRuleCall_4 = (RuleCall)cAlternatives.eContents().get(4);
		private final RuleCall cUrlTokParserRuleCall_5 = (RuleCall)cAlternatives.eContents().get(5);
		private final RuleCall cColorTokParserRuleCall_6 = (RuleCall)cAlternatives.eContents().get(6);
		
		//CssTok hidden(ML_COMMENT):
		//	IdentifierOrFuncTok | SymbolTok | WSTok | StringTok | NumberTok | UrlTok | ColorTok;
		@Override public ParserRule getRule() { return rule; }

		//IdentifierOrFuncTok | SymbolTok | WSTok | StringTok | NumberTok | UrlTok | ColorTok
		public Alternatives getAlternatives() { return cAlternatives; }

		//IdentifierOrFuncTok
		public RuleCall getIdentifierOrFuncTokParserRuleCall_0() { return cIdentifierOrFuncTokParserRuleCall_0; }

		//SymbolTok
		public RuleCall getSymbolTokParserRuleCall_1() { return cSymbolTokParserRuleCall_1; }

		//WSTok
		public RuleCall getWSTokParserRuleCall_2() { return cWSTokParserRuleCall_2; }

		//StringTok
		public RuleCall getStringTokParserRuleCall_3() { return cStringTokParserRuleCall_3; }

		//NumberTok
		public RuleCall getNumberTokParserRuleCall_4() { return cNumberTokParserRuleCall_4; }

		//UrlTok
		public RuleCall getUrlTokParserRuleCall_5() { return cUrlTokParserRuleCall_5; }

		//ColorTok
		public RuleCall getColorTokParserRuleCall_6() { return cColorTokParserRuleCall_6; }
	}

	public class URLTypeElements extends AbstractParserRuleElementFinder {
		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "URLType");
		private final Group cGroup = (Group)rule.eContents().get(1);
		private final Keyword cUrlKeyword_0 = (Keyword)cGroup.eContents().get(0);
		private final Assignment cUrlAssignment_1 = (Assignment)cGroup.eContents().get(1);
		private final RuleCall cUrlValidURLParserRuleCall_1_0 = (RuleCall)cUrlAssignment_1.eContents().get(0);
		private final Keyword cRightParenthesisKeyword_2 = (Keyword)cGroup.eContents().get(2);
		
		//URLType hidden(): //	FULLURL
		//	"url(" url=ValidURL ")";
		@Override public ParserRule getRule() { return rule; }

		////	FULLURL
		//"url(" url=ValidURL ")"
		public Group getGroup() { return cGroup; }

		////	FULLURL
		//"url("
		public Keyword getUrlKeyword_0() { return cUrlKeyword_0; }

		//url=ValidURL
		public Assignment getUrlAssignment_1() { return cUrlAssignment_1; }

		//ValidURL
		public RuleCall getUrlValidURLParserRuleCall_1_0() { return cUrlValidURLParserRuleCall_1_0; }

		//")"
		public Keyword getRightParenthesisKeyword_2() { return cRightParenthesisKeyword_2; }
	}

	public class ValidURLSymbolElements extends AbstractParserRuleElementFinder {
		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "ValidURLSymbol");
		private final Alternatives cAlternatives = (Alternatives)rule.eContents().get(1);
		private final RuleCall cDASHTerminalRuleCall_0 = (RuleCall)cAlternatives.eContents().get(0);
		private final Keyword cFullStopKeyword_1 = (Keyword)cAlternatives.eContents().get(1);
		private final RuleCall cUNDERSCORETerminalRuleCall_2 = (RuleCall)cAlternatives.eContents().get(2);
		private final Keyword cTildeKeyword_3 = (Keyword)cAlternatives.eContents().get(3);
		private final RuleCall cCOLONTerminalRuleCall_4 = (RuleCall)cAlternatives.eContents().get(4);
		private final Keyword cSolidusKeyword_5 = (Keyword)cAlternatives.eContents().get(5);
		private final Keyword cQuestionMarkKeyword_6 = (Keyword)cAlternatives.eContents().get(6);
		private final RuleCall cHASHMARKTerminalRuleCall_7 = (RuleCall)cAlternatives.eContents().get(7);
		private final Keyword cLeftSquareBracketKeyword_8 = (Keyword)cAlternatives.eContents().get(8);
		private final Keyword cRightSquareBracketKeyword_9 = (Keyword)cAlternatives.eContents().get(9);
		private final Keyword cCommercialAtKeyword_10 = (Keyword)cAlternatives.eContents().get(10);
		private final Keyword cExclamationMarkKeyword_11 = (Keyword)cAlternatives.eContents().get(11);
		private final Keyword cDollarSignKeyword_12 = (Keyword)cAlternatives.eContents().get(12);
		private final Keyword cAmpersandKeyword_13 = (Keyword)cAlternatives.eContents().get(13);
		private final Keyword cAsteriskKeyword_14 = (Keyword)cAlternatives.eContents().get(14);
		private final RuleCall cPLUSTerminalRuleCall_15 = (RuleCall)cAlternatives.eContents().get(15);
		private final RuleCall cCOMMATerminalRuleCall_16 = (RuleCall)cAlternatives.eContents().get(16);
		private final Keyword cSemicolonKeyword_17 = (Keyword)cAlternatives.eContents().get(17);
		private final Group cGroup_18 = (Group)cAlternatives.eContents().get(18);
		private final Keyword cEqualsSignKeyword_18_0 = (Keyword)cGroup_18.eContents().get(0);
		private final RuleCall cKeywordHackParserRuleCall_18_1 = (RuleCall)cGroup_18.eContents().get(1);
		
		//ValidURLSymbol:
		//	DASH / * "'" | '(' | ')' | need to be escaped* / | "." | UNDERSCORE | "~" | COLON | "/" | "?" | HASHMARK | "[" | "]" |
		//	"@" | "!" | "$" | "&" | "*" | PLUS | COMMA | ";" | "=" KeywordHack;
		@Override public ParserRule getRule() { return rule; }

		//DASH / * "'" | '(' | ')' | need to be escaped* / | "." | UNDERSCORE | "~" | COLON | "/" | "?" | HASHMARK | "[" | "]" | "@"
		//| "!" | "$" | "&" | "*" | PLUS | COMMA | ";" | "=" KeywordHack
		public Alternatives getAlternatives() { return cAlternatives; }

		//DASH
		public RuleCall getDASHTerminalRuleCall_0() { return cDASHTerminalRuleCall_0; }

		//"."
		public Keyword getFullStopKeyword_1() { return cFullStopKeyword_1; }

		//UNDERSCORE
		public RuleCall getUNDERSCORETerminalRuleCall_2() { return cUNDERSCORETerminalRuleCall_2; }

		//"~"
		public Keyword getTildeKeyword_3() { return cTildeKeyword_3; }

		//COLON
		public RuleCall getCOLONTerminalRuleCall_4() { return cCOLONTerminalRuleCall_4; }

		//"/"
		public Keyword getSolidusKeyword_5() { return cSolidusKeyword_5; }

		//"?"
		public Keyword getQuestionMarkKeyword_6() { return cQuestionMarkKeyword_6; }

		//HASHMARK
		public RuleCall getHASHMARKTerminalRuleCall_7() { return cHASHMARKTerminalRuleCall_7; }

		//"["
		public Keyword getLeftSquareBracketKeyword_8() { return cLeftSquareBracketKeyword_8; }

		//"]"
		public Keyword getRightSquareBracketKeyword_9() { return cRightSquareBracketKeyword_9; }

		//"@"
		public Keyword getCommercialAtKeyword_10() { return cCommercialAtKeyword_10; }

		//"!"
		public Keyword getExclamationMarkKeyword_11() { return cExclamationMarkKeyword_11; }

		//"$"
		public Keyword getDollarSignKeyword_12() { return cDollarSignKeyword_12; }

		//"&"
		public Keyword getAmpersandKeyword_13() { return cAmpersandKeyword_13; }

		//"*"
		public Keyword getAsteriskKeyword_14() { return cAsteriskKeyword_14; }

		//PLUS
		public RuleCall getPLUSTerminalRuleCall_15() { return cPLUSTerminalRuleCall_15; }

		//COMMA
		public RuleCall getCOMMATerminalRuleCall_16() { return cCOMMATerminalRuleCall_16; }

		//";"
		public Keyword getSemicolonKeyword_17() { return cSemicolonKeyword_17; }

		//"=" KeywordHack
		public Group getGroup_18() { return cGroup_18; }

		//"="
		public Keyword getEqualsSignKeyword_18_0() { return cEqualsSignKeyword_18_0; }

		//KeywordHack
		public RuleCall getKeywordHackParserRuleCall_18_1() { return cKeywordHackParserRuleCall_18_1; }
	}

	public class KeywordHackElements extends AbstractParserRuleElementFinder {
		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "KeywordHack");
		private final Alternatives cAlternatives = (Alternatives)rule.eContents().get(1);
		private final Keyword cNotKeyword_0 = (Keyword)cAlternatives.eContents().get(0);
		private final Keyword cNoKeyword_1 = (Keyword)cAlternatives.eContents().get(1);
		private final Keyword cUrlKeyword_2 = (Keyword)cAlternatives.eContents().get(2);
		private final Keyword cUrKeyword_3 = (Keyword)cAlternatives.eContents().get(3);
		
		//KeywordHack:
		//	"not" | "no" | "url" | "ur";
		@Override public ParserRule getRule() { return rule; }

		//"not" | "no" | "url" | "ur"
		public Alternatives getAlternatives() { return cAlternatives; }

		//"not"
		public Keyword getNotKeyword_0() { return cNotKeyword_0; }

		//"no"
		public Keyword getNoKeyword_1() { return cNoKeyword_1; }

		//"url"
		public Keyword getUrlKeyword_2() { return cUrlKeyword_2; }

		//"ur"
		public Keyword getUrKeyword_3() { return cUrKeyword_3; }
	}

	public class ValidURLElements extends AbstractParserRuleElementFinder {
		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "ValidURL");
		private final Alternatives cAlternatives = (Alternatives)rule.eContents().get(1);
		private final RuleCall cCSSSTRINGTerminalRuleCall_0 = (RuleCall)cAlternatives.eContents().get(0);
		private final Alternatives cAlternatives_1 = (Alternatives)cAlternatives.eContents().get(1);
		private final RuleCall cValidURLSymbolParserRuleCall_1_0 = (RuleCall)cAlternatives_1.eContents().get(0);
		private final RuleCall cKeywordHackParserRuleCall_1_1 = (RuleCall)cAlternatives_1.eContents().get(1);
		private final RuleCall cONE_HEX_LETTERTerminalRuleCall_1_2 = (RuleCall)cAlternatives_1.eContents().get(2);
		private final RuleCall cONE_NON_HEX_LETTERTerminalRuleCall_1_3 = (RuleCall)cAlternatives_1.eContents().get(3);
		private final RuleCall cONE_INTTerminalRuleCall_1_4 = (RuleCall)cAlternatives_1.eContents().get(4);
		private final Keyword cReverseSolidusSpaceKeyword_1_5 = (Keyword)cAlternatives_1.eContents().get(5);
		private final Keyword cReverseSolidusLeftParenthesisKeyword_1_6 = (Keyword)cAlternatives_1.eContents().get(6);
		private final Keyword cReverseSolidusRightParenthesisKeyword_1_7 = (Keyword)cAlternatives_1.eContents().get(7);
		private final Keyword cReverseSolidusApostropheKeyword_1_8 = (Keyword)cAlternatives_1.eContents().get(8);
		private final Keyword cReverseSolidusQuotationMarkKeyword_1_9 = (Keyword)cAlternatives_1.eContents().get(9);
		private final Group cGroup_1_10 = (Group)cAlternatives_1.eContents().get(10);
		private final RuleCall cPERCENTTerminalRuleCall_1_10_0 = (RuleCall)cGroup_1_10.eContents().get(0);
		private final Alternatives cAlternatives_1_10_1 = (Alternatives)cGroup_1_10.eContents().get(1);
		private final RuleCall cONE_INTTerminalRuleCall_1_10_1_0 = (RuleCall)cAlternatives_1_10_1.eContents().get(0);
		private final RuleCall cONE_HEX_LETTERTerminalRuleCall_1_10_1_1 = (RuleCall)cAlternatives_1_10_1.eContents().get(1);
		private final Alternatives cAlternatives_1_10_2 = (Alternatives)cGroup_1_10.eContents().get(2);
		private final RuleCall cONE_INTTerminalRuleCall_1_10_2_0 = (RuleCall)cAlternatives_1_10_2.eContents().get(0);
		private final RuleCall cONE_HEX_LETTERTerminalRuleCall_1_10_2_1 = (RuleCall)cAlternatives_1_10_2.eContents().get(1);
		
		//ValidURL returns ecore::EString hidden():
		//	CSSSTRING | (ValidURLSymbol | KeywordHack | ONE_HEX_LETTER | ONE_NON_HEX_LETTER | ONE_INT | "\\ " | "\\(" | "\\)" |
		//	"\\\'" | "\\\"" | PERCENT (ONE_INT | ONE_HEX_LETTER) (ONE_INT | ONE_HEX_LETTER))+;
		@Override public ParserRule getRule() { return rule; }

		//CSSSTRING | (ValidURLSymbol | KeywordHack | ONE_HEX_LETTER | ONE_NON_HEX_LETTER | ONE_INT | "\\ " | "\\(" | "\\)" |
		//"\\\'" | "\\\"" | PERCENT (ONE_INT | ONE_HEX_LETTER) (ONE_INT | ONE_HEX_LETTER))+
		public Alternatives getAlternatives() { return cAlternatives; }

		//CSSSTRING
		public RuleCall getCSSSTRINGTerminalRuleCall_0() { return cCSSSTRINGTerminalRuleCall_0; }

		//(ValidURLSymbol | KeywordHack | ONE_HEX_LETTER | ONE_NON_HEX_LETTER | ONE_INT | "\\ " | "\\(" | "\\)" | "\\\'" | "\\\""
		//| PERCENT (ONE_INT | ONE_HEX_LETTER) (ONE_INT | ONE_HEX_LETTER))+
		public Alternatives getAlternatives_1() { return cAlternatives_1; }

		//ValidURLSymbol
		public RuleCall getValidURLSymbolParserRuleCall_1_0() { return cValidURLSymbolParserRuleCall_1_0; }

		//KeywordHack
		public RuleCall getKeywordHackParserRuleCall_1_1() { return cKeywordHackParserRuleCall_1_1; }

		//ONE_HEX_LETTER
		public RuleCall getONE_HEX_LETTERTerminalRuleCall_1_2() { return cONE_HEX_LETTERTerminalRuleCall_1_2; }

		//ONE_NON_HEX_LETTER
		public RuleCall getONE_NON_HEX_LETTERTerminalRuleCall_1_3() { return cONE_NON_HEX_LETTERTerminalRuleCall_1_3; }

		//ONE_INT
		public RuleCall getONE_INTTerminalRuleCall_1_4() { return cONE_INTTerminalRuleCall_1_4; }

		//"\\ "
		public Keyword getReverseSolidusSpaceKeyword_1_5() { return cReverseSolidusSpaceKeyword_1_5; }

		//"\\("
		public Keyword getReverseSolidusLeftParenthesisKeyword_1_6() { return cReverseSolidusLeftParenthesisKeyword_1_6; }

		//"\\)"
		public Keyword getReverseSolidusRightParenthesisKeyword_1_7() { return cReverseSolidusRightParenthesisKeyword_1_7; }

		//"\\\'"
		public Keyword getReverseSolidusApostropheKeyword_1_8() { return cReverseSolidusApostropheKeyword_1_8; }

		//"\\\""
		public Keyword getReverseSolidusQuotationMarkKeyword_1_9() { return cReverseSolidusQuotationMarkKeyword_1_9; }

		//PERCENT (ONE_INT | ONE_HEX_LETTER) (ONE_INT | ONE_HEX_LETTER)
		public Group getGroup_1_10() { return cGroup_1_10; }

		//PERCENT
		public RuleCall getPERCENTTerminalRuleCall_1_10_0() { return cPERCENTTerminalRuleCall_1_10_0; }

		//ONE_INT | ONE_HEX_LETTER
		public Alternatives getAlternatives_1_10_1() { return cAlternatives_1_10_1; }

		//ONE_INT
		public RuleCall getONE_INTTerminalRuleCall_1_10_1_0() { return cONE_INTTerminalRuleCall_1_10_1_0; }

		//ONE_HEX_LETTER
		public RuleCall getONE_HEX_LETTERTerminalRuleCall_1_10_1_1() { return cONE_HEX_LETTERTerminalRuleCall_1_10_1_1; }

		//ONE_INT | ONE_HEX_LETTER
		public Alternatives getAlternatives_1_10_2() { return cAlternatives_1_10_2; }

		//ONE_INT
		public RuleCall getONE_INTTerminalRuleCall_1_10_2_0() { return cONE_INTTerminalRuleCall_1_10_2_0; }

		//ONE_HEX_LETTER
		public RuleCall getONE_HEX_LETTERTerminalRuleCall_1_10_2_1() { return cONE_HEX_LETTERTerminalRuleCall_1_10_2_1; }
	}

	public class IdentifierElements extends AbstractParserRuleElementFinder {
		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "Identifier");
		private final Group cGroup = (Group)rule.eContents().get(1);
		private final RuleCall cDASHTerminalRuleCall_0 = (RuleCall)cGroup.eContents().get(0);
		private final Alternatives cAlternatives_1 = (Alternatives)cGroup.eContents().get(1);
		private final RuleCall cUNDERSCORETerminalRuleCall_1_0 = (RuleCall)cAlternatives_1.eContents().get(0);
		private final RuleCall cONE_HEX_LETTERTerminalRuleCall_1_1 = (RuleCall)cAlternatives_1.eContents().get(1);
		private final RuleCall cONE_NON_HEX_LETTERTerminalRuleCall_1_2 = (RuleCall)cAlternatives_1.eContents().get(2);
		private final RuleCall cKeywordHackParserRuleCall_1_3 = (RuleCall)cAlternatives_1.eContents().get(3);
		private final Group cGroup_2 = (Group)cGroup.eContents().get(2);
		private final Alternatives cAlternatives_2_0 = (Alternatives)cGroup_2.eContents().get(0);
		private final RuleCall cUNDERSCORETerminalRuleCall_2_0_0 = (RuleCall)cAlternatives_2_0.eContents().get(0);
		private final RuleCall cDASHTerminalRuleCall_2_0_1 = (RuleCall)cAlternatives_2_0.eContents().get(1);
		private final RuleCall cONE_HEX_LETTERTerminalRuleCall_2_0_2 = (RuleCall)cAlternatives_2_0.eContents().get(2);
		private final RuleCall cONE_NON_HEX_LETTERTerminalRuleCall_2_0_3 = (RuleCall)cAlternatives_2_0.eContents().get(3);
		private final RuleCall cONE_INTTerminalRuleCall_2_0_4 = (RuleCall)cAlternatives_2_0.eContents().get(4);
		private final RuleCall cKeywordHackParserRuleCall_2_0_5 = (RuleCall)cAlternatives_2_0.eContents().get(5);
		
		//Identifier returns ecore::EString hidden():
		//	DASH? (UNDERSCORE | ONE_HEX_LETTER | ONE_NON_HEX_LETTER | KeywordHack) => (UNDERSCORE | DASH | ONE_HEX_LETTER |
		//	ONE_NON_HEX_LETTER | ONE_INT | KeywordHack)*;
		@Override public ParserRule getRule() { return rule; }

		//DASH? (UNDERSCORE | ONE_HEX_LETTER | ONE_NON_HEX_LETTER | KeywordHack) => (UNDERSCORE | DASH | ONE_HEX_LETTER |
		//ONE_NON_HEX_LETTER | ONE_INT | KeywordHack)*
		public Group getGroup() { return cGroup; }

		//DASH?
		public RuleCall getDASHTerminalRuleCall_0() { return cDASHTerminalRuleCall_0; }

		//UNDERSCORE | ONE_HEX_LETTER | ONE_NON_HEX_LETTER | KeywordHack
		public Alternatives getAlternatives_1() { return cAlternatives_1; }

		//UNDERSCORE
		public RuleCall getUNDERSCORETerminalRuleCall_1_0() { return cUNDERSCORETerminalRuleCall_1_0; }

		//ONE_HEX_LETTER
		public RuleCall getONE_HEX_LETTERTerminalRuleCall_1_1() { return cONE_HEX_LETTERTerminalRuleCall_1_1; }

		//ONE_NON_HEX_LETTER
		public RuleCall getONE_NON_HEX_LETTERTerminalRuleCall_1_2() { return cONE_NON_HEX_LETTERTerminalRuleCall_1_2; }

		//KeywordHack
		public RuleCall getKeywordHackParserRuleCall_1_3() { return cKeywordHackParserRuleCall_1_3; }

		//=> (UNDERSCORE | DASH | ONE_HEX_LETTER | ONE_NON_HEX_LETTER | ONE_INT | KeywordHack)*
		public Group getGroup_2() { return cGroup_2; }

		//UNDERSCORE | DASH | ONE_HEX_LETTER | ONE_NON_HEX_LETTER | ONE_INT | KeywordHack
		public Alternatives getAlternatives_2_0() { return cAlternatives_2_0; }

		//UNDERSCORE
		public RuleCall getUNDERSCORETerminalRuleCall_2_0_0() { return cUNDERSCORETerminalRuleCall_2_0_0; }

		//DASH
		public RuleCall getDASHTerminalRuleCall_2_0_1() { return cDASHTerminalRuleCall_2_0_1; }

		//ONE_HEX_LETTER
		public RuleCall getONE_HEX_LETTERTerminalRuleCall_2_0_2() { return cONE_HEX_LETTERTerminalRuleCall_2_0_2; }

		//ONE_NON_HEX_LETTER
		public RuleCall getONE_NON_HEX_LETTERTerminalRuleCall_2_0_3() { return cONE_NON_HEX_LETTERTerminalRuleCall_2_0_3; }

		//ONE_INT
		public RuleCall getONE_INTTerminalRuleCall_2_0_4() { return cONE_INTTerminalRuleCall_2_0_4; }

		//KeywordHack
		public RuleCall getKeywordHackParserRuleCall_2_0_5() { return cKeywordHackParserRuleCall_2_0_5; }
	}

	public class NumElements extends AbstractParserRuleElementFinder {
		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "Num");
		private final Group cGroup = (Group)rule.eContents().get(1);
		private final Alternatives cAlternatives_0 = (Alternatives)cGroup.eContents().get(0);
		private final RuleCall cPLUSTerminalRuleCall_0_0 = (RuleCall)cAlternatives_0.eContents().get(0);
		private final RuleCall cDASHTerminalRuleCall_0_1 = (RuleCall)cAlternatives_0.eContents().get(1);
		private final Alternatives cAlternatives_1 = (Alternatives)cGroup.eContents().get(1);
		private final Group cGroup_1_0 = (Group)cAlternatives_1.eContents().get(0);
		private final Keyword cFullStopKeyword_1_0_0 = (Keyword)cGroup_1_0.eContents().get(0);
		private final RuleCall cONE_INTTerminalRuleCall_1_0_1 = (RuleCall)cGroup_1_0.eContents().get(1);
		private final Group cGroup_1_1 = (Group)cAlternatives_1.eContents().get(1);
		private final RuleCall cONE_INTTerminalRuleCall_1_1_0 = (RuleCall)cGroup_1_1.eContents().get(0);
		private final Group cGroup_1_1_1 = (Group)cGroup_1_1.eContents().get(1);
		private final Keyword cFullStopKeyword_1_1_1_0 = (Keyword)cGroup_1_1_1.eContents().get(0);
		private final RuleCall cONE_INTTerminalRuleCall_1_1_1_1 = (RuleCall)cGroup_1_1_1.eContents().get(1);
		
		//Num returns ecore::EDouble hidden():
		//	(PLUS | DASH)? ("." => ONE_INT+ | ONE_INT+ ("." => ONE_INT+)?);
		@Override public ParserRule getRule() { return rule; }

		//(PLUS | DASH)? ("." => ONE_INT+ | ONE_INT+ ("." => ONE_INT+)?)
		public Group getGroup() { return cGroup; }

		//(PLUS | DASH)?
		public Alternatives getAlternatives_0() { return cAlternatives_0; }

		//PLUS
		public RuleCall getPLUSTerminalRuleCall_0_0() { return cPLUSTerminalRuleCall_0_0; }

		//DASH
		public RuleCall getDASHTerminalRuleCall_0_1() { return cDASHTerminalRuleCall_0_1; }

		//"." => ONE_INT+ | ONE_INT+ ("." => ONE_INT+)?
		public Alternatives getAlternatives_1() { return cAlternatives_1; }

		//"." => ONE_INT+
		public Group getGroup_1_0() { return cGroup_1_0; }

		//"."
		public Keyword getFullStopKeyword_1_0_0() { return cFullStopKeyword_1_0_0; }

		//=> ONE_INT+
		public RuleCall getONE_INTTerminalRuleCall_1_0_1() { return cONE_INTTerminalRuleCall_1_0_1; }

		//=> ONE_INT+ ("." => ONE_INT+)?
		public Group getGroup_1_1() { return cGroup_1_1; }

		//=> ONE_INT+
		public RuleCall getONE_INTTerminalRuleCall_1_1_0() { return cONE_INTTerminalRuleCall_1_1_0; }

		//(=> "." => ONE_INT+)?
		public Group getGroup_1_1_1() { return cGroup_1_1_1; }

		//=> "."
		public Keyword getFullStopKeyword_1_1_1_0() { return cFullStopKeyword_1_1_1_0; }

		//=> ONE_INT+
		public RuleCall getONE_INTTerminalRuleCall_1_1_1_1() { return cONE_INTTerminalRuleCall_1_1_1_1; }
	}

	public class HexElements extends AbstractParserRuleElementFinder {
		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "Hex");
		private final Group cGroup = (Group)rule.eContents().get(1);
		private final RuleCall cHASHMARKTerminalRuleCall_0 = (RuleCall)cGroup.eContents().get(0);
		private final Group cGroup_1 = (Group)cGroup.eContents().get(1);
		private final Alternatives cAlternatives_1_0 = (Alternatives)cGroup_1.eContents().get(0);
		private final RuleCall cONE_INTTerminalRuleCall_1_0_0 = (RuleCall)cAlternatives_1_0.eContents().get(0);
		private final RuleCall cONE_HEX_LETTERTerminalRuleCall_1_0_1 = (RuleCall)cAlternatives_1_0.eContents().get(1);
		
		//Hex returns ecore::EString:
		//	HASHMARK => (ONE_INT | ONE_HEX_LETTER)+;
		@Override public ParserRule getRule() { return rule; }

		//HASHMARK => (ONE_INT | ONE_HEX_LETTER)+
		public Group getGroup() { return cGroup; }

		//HASHMARK
		public RuleCall getHASHMARKTerminalRuleCall_0() { return cHASHMARKTerminalRuleCall_0; }

		//=> (ONE_INT | ONE_HEX_LETTER)+
		public Group getGroup_1() { return cGroup_1; }

		//ONE_INT | ONE_HEX_LETTER
		public Alternatives getAlternatives_1_0() { return cAlternatives_1_0; }

		//ONE_INT
		public RuleCall getONE_INTTerminalRuleCall_1_0_0() { return cONE_INTTerminalRuleCall_1_0_0; }

		//ONE_HEX_LETTER
		public RuleCall getONE_HEX_LETTERTerminalRuleCall_1_0_1() { return cONE_HEX_LETTERTerminalRuleCall_1_0_1; }
	}
	
	
	private final StylesheetElements pStylesheet;
	private final CharsetElements pCharset;
	private final ImportExpressionElements pImportExpression;
	private final PageElements pPage;
	private final Pseudo_pageElements pPseudo_page;
	private final MediaElements pMedia;
	private final Media_listElements pMedia_list;
	private final MediumElements pMedium;
	private final Font_faceElements pFont_face;
	private final KeyframesElements pKeyframes;
	private final Keyframe_selectorElements pKeyframe_selector;
	private final RulesetElements pRuleset;
	private final SelectorElements pSelector;
	private final SimpleSelectorForNegationElements pSimpleSelectorForNegation;
	private final SubSelectorForNegationElements pSubSelectorForNegation;
	private final Simple_selectorElements pSimple_selector;
	private final SubSelectorElements pSubSelector;
	private final AttributeSelectorElements pAttributeSelector;
	private final ClassSelectorElements pClassSelector;
	private final ElementSelectorElements pElementSelector;
	private final UniversalSelectorElements pUniversalSelector;
	private final IdSelectorElements pIdSelector;
	private final Css_namespace_prefixElements pCss_namespace_prefix;
	private final Css_declarationElements pCss_declaration;
	private final Css_propertyElements pCss_property;
	private final ValidPropertyIdentElements pValidPropertyIdent;
	private final PseudoClassOrFuncElements pPseudoClassOrFunc;
	private final PseudoClassElements pPseudoClass;
	private final PseudoClassNameElements pPseudoClassName;
	private final PseudoClassFunctionElements pPseudoClassFunction;
	private final NotFunctionCallElements pNotFunctionCall;
	private final CombinatorElements pCombinator;
	private final OperatorElements pOperator;
	private final Unary_operatorElements pUnary_operator;
	private final SymbolTokElements pSymbolTok;
	private final WSTokElements pWSTok;
	private final StringTokElements pStringTok;
	private final NumberTokElements pNumberTok;
	private final UrlTokElements pUrlTok;
	private final ColorTokElements pColorTok;
	private final IdentifierOrFuncTokElements pIdentifierOrFuncTok;
	private final CssTokElements pCssTok;
	private final URLTypeElements pURLType;
	private final ValidURLSymbolElements pValidURLSymbol;
	private final KeywordHackElements pKeywordHack;
	private final ValidURLElements pValidURL;
	private final TerminalRule tIMPORTANT_SYM;
	private final IdentifierElements pIdentifier;
	private final NumElements pNum;
	private final HexElements pHex;
	private final TerminalRule tONE_INT;
	private final TerminalRule tONE_HEX_LETTER;
	private final TerminalRule tONE_NON_HEX_LETTER;
	private final TerminalRule tUNDERSCORE;
	private final TerminalRule tDASH;
	private final TerminalRule tPLUS;
	private final TerminalRule tHASHMARK;
	private final TerminalRule tCOMMA;
	private final TerminalRule tPERCENT;
	private final TerminalRule tML_COMMENT;
	private final TerminalRule tWS;
	private final TerminalRule tCSSSTRING;
	private final TerminalRule tINCLUDES;
	private final TerminalRule tDASHMATCH;
	private final TerminalRule tCOLON;
	
	private final Grammar grammar;

	@Inject
	public CssDslGrammarAccess(GrammarProvider grammarProvider) {
		this.grammar = internalFindGrammar(grammarProvider);
		this.pStylesheet = new StylesheetElements();
		this.pCharset = new CharsetElements();
		this.pImportExpression = new ImportExpressionElements();
		this.pPage = new PageElements();
		this.pPseudo_page = new Pseudo_pageElements();
		this.pMedia = new MediaElements();
		this.pMedia_list = new Media_listElements();
		this.pMedium = new MediumElements();
		this.pFont_face = new Font_faceElements();
		this.pKeyframes = new KeyframesElements();
		this.pKeyframe_selector = new Keyframe_selectorElements();
		this.pRuleset = new RulesetElements();
		this.pSelector = new SelectorElements();
		this.pSimpleSelectorForNegation = new SimpleSelectorForNegationElements();
		this.pSubSelectorForNegation = new SubSelectorForNegationElements();
		this.pSimple_selector = new Simple_selectorElements();
		this.pSubSelector = new SubSelectorElements();
		this.pAttributeSelector = new AttributeSelectorElements();
		this.pClassSelector = new ClassSelectorElements();
		this.pElementSelector = new ElementSelectorElements();
		this.pUniversalSelector = new UniversalSelectorElements();
		this.pIdSelector = new IdSelectorElements();
		this.pCss_namespace_prefix = new Css_namespace_prefixElements();
		this.pCss_declaration = new Css_declarationElements();
		this.pCss_property = new Css_propertyElements();
		this.pValidPropertyIdent = new ValidPropertyIdentElements();
		this.pPseudoClassOrFunc = new PseudoClassOrFuncElements();
		this.pPseudoClass = new PseudoClassElements();
		this.pPseudoClassName = new PseudoClassNameElements();
		this.pPseudoClassFunction = new PseudoClassFunctionElements();
		this.pNotFunctionCall = new NotFunctionCallElements();
		this.pCombinator = new CombinatorElements();
		this.pOperator = new OperatorElements();
		this.pUnary_operator = new Unary_operatorElements();
		this.pSymbolTok = new SymbolTokElements();
		this.pWSTok = new WSTokElements();
		this.pStringTok = new StringTokElements();
		this.pNumberTok = new NumberTokElements();
		this.pUrlTok = new UrlTokElements();
		this.pColorTok = new ColorTokElements();
		this.pIdentifierOrFuncTok = new IdentifierOrFuncTokElements();
		this.pCssTok = new CssTokElements();
		this.pURLType = new URLTypeElements();
		this.pValidURLSymbol = new ValidURLSymbolElements();
		this.pKeywordHack = new KeywordHackElements();
		this.pValidURL = new ValidURLElements();
		this.tIMPORTANT_SYM = (TerminalRule) GrammarUtil.findRuleForName(getGrammar(), "IMPORTANT_SYM");
		this.pIdentifier = new IdentifierElements();
		this.pNum = new NumElements();
		this.pHex = new HexElements();
		this.tONE_INT = (TerminalRule) GrammarUtil.findRuleForName(getGrammar(), "ONE_INT");
		this.tONE_HEX_LETTER = (TerminalRule) GrammarUtil.findRuleForName(getGrammar(), "ONE_HEX_LETTER");
		this.tONE_NON_HEX_LETTER = (TerminalRule) GrammarUtil.findRuleForName(getGrammar(), "ONE_NON_HEX_LETTER");
		this.tUNDERSCORE = (TerminalRule) GrammarUtil.findRuleForName(getGrammar(), "UNDERSCORE");
		this.tDASH = (TerminalRule) GrammarUtil.findRuleForName(getGrammar(), "DASH");
		this.tPLUS = (TerminalRule) GrammarUtil.findRuleForName(getGrammar(), "PLUS");
		this.tHASHMARK = (TerminalRule) GrammarUtil.findRuleForName(getGrammar(), "HASHMARK");
		this.tCOMMA = (TerminalRule) GrammarUtil.findRuleForName(getGrammar(), "COMMA");
		this.tPERCENT = (TerminalRule) GrammarUtil.findRuleForName(getGrammar(), "PERCENT");
		this.tML_COMMENT = (TerminalRule) GrammarUtil.findRuleForName(getGrammar(), "ML_COMMENT");
		this.tWS = (TerminalRule) GrammarUtil.findRuleForName(getGrammar(), "WS");
		this.tCSSSTRING = (TerminalRule) GrammarUtil.findRuleForName(getGrammar(), "CSSSTRING");
		this.tINCLUDES = (TerminalRule) GrammarUtil.findRuleForName(getGrammar(), "INCLUDES");
		this.tDASHMATCH = (TerminalRule) GrammarUtil.findRuleForName(getGrammar(), "DASHMATCH");
		this.tCOLON = (TerminalRule) GrammarUtil.findRuleForName(getGrammar(), "COLON");
	}
	
	protected Grammar internalFindGrammar(GrammarProvider grammarProvider) {
		Grammar grammar = grammarProvider.getGrammar(this);
		while (grammar != null) {
			if ("org.eclipse.fx.ide.css.CssDsl".equals(grammar.getName())) {
				return grammar;
			}
			List<Grammar> grammars = grammar.getUsedGrammars();
			if (!grammars.isEmpty()) {
				grammar = grammars.iterator().next();
			} else {
				return null;
			}
		}
		return grammar;
	}
	
	@Override
	public Grammar getGrammar() {
		return grammar;
	}
	

	
	//stylesheet:
	//	charset=charset? imports+=importExpression* (ruleset+=ruleset | media+=media | page+=page | font_face+=font_face |
	//	keyframes+=keyframes)*;
	public StylesheetElements getStylesheetAccess() {
		return pStylesheet;
	}
	
	public ParserRule getStylesheetRule() {
		return getStylesheetAccess().getRule();
	}

	//charset:
	//	("@charset" | "@CHARSET") charset=CSSSTRING ";";
	public CharsetElements getCharsetAccess() {
		return pCharset;
	}
	
	public ParserRule getCharsetRule() {
		return getCharsetAccess().getRule();
	}

	//importExpression:
	//	("@import" | "@IMPORT") (value=CSSSTRING | URLType mediaList=media_list?) ";";
	public ImportExpressionElements getImportExpressionAccess() {
		return pImportExpression;
	}
	
	public ParserRule getImportExpressionRule() {
		return getImportExpressionAccess().getRule();
	}

	//page:
	//	{page} ("@page" | "@PAGE") pseudoPage=pseudo_page? "{" declarations+=css_declaration? (";"
	//	declarations+=css_declaration?)* "}";
	public PageElements getPageAccess() {
		return pPage;
	}
	
	public ParserRule getPageRule() {
		return getPageAccess().getRule();
	}

	//pseudo_page:
	//	COLON Identifier;
	public Pseudo_pageElements getPseudo_pageAccess() {
		return pPseudo_page;
	}
	
	public ParserRule getPseudo_pageRule() {
		return getPseudo_pageAccess().getRule();
	}

	//media:
	//	("@media" | "@MEDIA") medialist=media_list "{" rulesets+=ruleset* "}";
	public MediaElements getMediaAccess() {
		return pMedia;
	}
	
	public ParserRule getMediaRule() {
		return getMediaAccess().getRule();
	}

	//media_list:
	//	medium (COMMA medium)*;
	public Media_listElements getMedia_listAccess() {
		return pMedia_list;
	}
	
	public ParserRule getMedia_listRule() {
		return getMedia_listAccess().getRule();
	}

	//medium:
	//	Identifier;
	public MediumElements getMediumAccess() {
		return pMedium;
	}
	
	public ParserRule getMediumRule() {
		return getMediumAccess().getRule();
	}

	//font_face:
	//	{font_face} ("@font-face" | "@FONT-FACE") "{" declarations+=css_declaration? (";" declarations+=css_declaration?)*
	//	"}";
	public Font_faceElements getFont_faceAccess() {
		return pFont_face;
	}
	
	public ParserRule getFont_faceRule() {
		return getFont_faceAccess().getRule();
	}

	//keyframes:
	//	{font_face} ("@keyframes" | "@KEYFRAMES") name=Identifier "{" keyframeselectors+=keyframe_selector? (";"
	//	keyframeselectors+=keyframe_selector?)* "}";
	public KeyframesElements getKeyframesAccess() {
		return pKeyframes;
	}
	
	public ParserRule getKeyframesRule() {
		return getKeyframesAccess().getRule();
	}

	//keyframe_selector:
	//	(type=Identifier | percentage=Num PERCENT) "{" declarations+=css_declaration? (";" declarations+=css_declaration?)*
	//	"}";
	public Keyframe_selectorElements getKeyframe_selectorAccess() {
		return pKeyframe_selector;
	}
	
	public ParserRule getKeyframe_selectorRule() {
		return getKeyframe_selectorAccess().getRule();
	}

	//ruleset:
	//	selectors+=selector (WS* COMMA selectors+=selector)* WS* "{" (declarations+=css_declaration (";"
	//	declarations+=css_declaration)* ";"?)? "}";
	public RulesetElements getRulesetAccess() {
		return pRuleset;
	}
	
	public ParserRule getRulesetRule() {
		return getRulesetAccess().getRule();
	}

	//// check simple_selctor cardinality
	//selector hidden(ML_COMMENT):
	//	simpleselectors+=simple_selector (combinator=combinator WS* selector=selector | WS+ (combinator=combinator WS*)?
	//	selector=selector)?;
	public SelectorElements getSelectorAccess() {
		return pSelector;
	}
	
	public ParserRule getSelectorRule() {
		return getSelectorAccess().getRule();
	}

	//SimpleSelectorForNegation:
	//	(element=ElementSelector | universal=UniversalSelector) subSelectors+=SubSelectorForNegation* | =>
	//	subSelectors+=SubSelectorForNegation+;
	public SimpleSelectorForNegationElements getSimpleSelectorForNegationAccess() {
		return pSimpleSelectorForNegation;
	}
	
	public ParserRule getSimpleSelectorForNegationRule() {
		return getSimpleSelectorForNegationAccess().getRule();
	}

	//SubSelectorForNegation returns CssSelector:
	//	IdSelector | ClassSelector | AttributeSelector | PseudoClass;
	public SubSelectorForNegationElements getSubSelectorForNegationAccess() {
		return pSubSelectorForNegation;
	}
	
	public ParserRule getSubSelectorForNegationRule() {
		return getSubSelectorForNegationAccess().getRule();
	}

	//simple_selector hidden(ML_COMMENT):
	//	(element=ElementSelector | universal=UniversalSelector) subSelectors+=SubSelector* | subSelectors+=SubSelector+;
	public Simple_selectorElements getSimple_selectorAccess() {
		return pSimple_selector;
	}
	
	public ParserRule getSimple_selectorRule() {
		return getSimple_selectorAccess().getRule();
	}

	//SubSelector returns CssSelector:
	//	IdSelector | ClassSelector | AttributeSelector | PseudoClassOrFunc;
	public SubSelectorElements getSubSelectorAccess() {
		return pSubSelector;
	}
	
	public ParserRule getSubSelectorRule() {
		return getSubSelectorAccess().getRule();
	}

	//AttributeSelector returns CssSelector:
	//	{AttributeSelector} "[" name=Identifier (op=("^=" | "$=" | "*=" | "=" | INCLUDES | DASHMATCH) value=(Identifier |
	//	CSSSTRING))? "]";
	public AttributeSelectorElements getAttributeSelectorAccess() {
		return pAttributeSelector;
	}
	
	public ParserRule getAttributeSelectorRule() {
		return getAttributeSelectorAccess().getRule();
	}

	//ClassSelector:
	//	{ClassSelector} "." name=Identifier;
	public ClassSelectorElements getClassSelectorAccess() {
		return pClassSelector;
	}
	
	public ParserRule getClassSelectorRule() {
		return getClassSelectorAccess().getRule();
	}

	//ElementSelector:
	//	{ElementSelector} name=Identifier;
	public ElementSelectorElements getElementSelectorAccess() {
		return pElementSelector;
	}
	
	public ParserRule getElementSelectorRule() {
		return getElementSelectorAccess().getRule();
	}

	//UniversalSelector:
	//	{UniversalSelector} namespace=css_namespace_prefix? "*";
	public UniversalSelectorElements getUniversalSelectorAccess() {
		return pUniversalSelector;
	}
	
	public ParserRule getUniversalSelectorRule() {
		return getUniversalSelectorAccess().getRule();
	}

	//IdSelector:
	//	{IdSelector} HASHMARK name=Identifier;
	public IdSelectorElements getIdSelectorAccess() {
		return pIdSelector;
	}
	
	public ParserRule getIdSelectorRule() {
		return getIdSelectorAccess().getRule();
	}

	//css_namespace_prefix:
	//	(Identifier | "*")? "|";
	public Css_namespace_prefixElements getCss_namespace_prefixAccess() {
		return pCss_namespace_prefix;
	}
	
	public ParserRule getCss_namespace_prefixRule() {
		return getCss_namespace_prefixAccess().getRule();
	}

	//css_declaration hidden(ML_COMMENT):
	//	WS* property=css_property WS* COLON valueTokens+=CssTok+ important?=IMPORTANT_SYM?;
	public Css_declarationElements getCss_declarationAccess() {
		return pCss_declaration;
	}
	
	public ParserRule getCss_declarationRule() {
		return getCss_declarationAccess().getRule();
	}

	//css_property:
	//	{css_property} name=ValidPropertyIdent;
	public Css_propertyElements getCss_propertyAccess() {
		return pCss_property;
	}
	
	public ParserRule getCss_propertyRule() {
		return getCss_propertyAccess().getRule();
	}

	//ValidPropertyIdent:
	//	Identifier;
	public ValidPropertyIdentElements getValidPropertyIdentAccess() {
		return pValidPropertyIdent;
	}
	
	public ParserRule getValidPropertyIdentRule() {
		return getValidPropertyIdentAccess().getRule();
	}

	//PseudoClassOrFunc:
	//	PseudoClass | PseudoClassFunction;
	public PseudoClassOrFuncElements getPseudoClassOrFuncAccess() {
		return pPseudoClassOrFunc;
	}
	
	public ParserRule getPseudoClassOrFuncRule() {
		return getPseudoClassOrFuncAccess().getRule();
	}

	//PseudoClass:
	//	COLON COLON? PseudoClassName;
	public PseudoClassElements getPseudoClassAccess() {
		return pPseudoClass;
	}
	
	public ParserRule getPseudoClassRule() {
		return getPseudoClassAccess().getRule();
	}

	//PseudoClassName:
	//	name=Identifier;
	public PseudoClassNameElements getPseudoClassNameAccess() {
		return pPseudoClassName;
	}
	
	public ParserRule getPseudoClassNameRule() {
		return getPseudoClassNameAccess().getRule();
	}

	//PseudoClassFunction:
	//	not?=NotFunctionCall paramSelector=SimpleSelectorForNegation ")" | COLON name=Identifier "(" params+=CssTok* ")";
	public PseudoClassFunctionElements getPseudoClassFunctionAccess() {
		return pPseudoClassFunction;
	}
	
	public ParserRule getPseudoClassFunctionRule() {
		return getPseudoClassFunctionAccess().getRule();
	}

	//NotFunctionCall hidden():
	//	COLON "not(";
	public NotFunctionCallElements getNotFunctionCallAccess() {
		return pNotFunctionCall;
	}
	
	public ParserRule getNotFunctionCallRule() {
		return getNotFunctionCallAccess().getRule();
	}

	//combinator:
	//	PLUS | ">" | "~";
	public CombinatorElements getCombinatorAccess() {
		return pCombinator;
	}
	
	public ParserRule getCombinatorRule() {
		return getCombinatorAccess().getRule();
	}

	//operator:
	//	"/" | COMMA;
	public OperatorElements getOperatorAccess() {
		return pOperator;
	}
	
	public ParserRule getOperatorRule() {
		return getOperatorAccess().getRule();
	}

	//unary_operator:
	//	DASH | PLUS;
	public Unary_operatorElements getUnary_operatorAccess() {
		return pUnary_operator;
	}
	
	public ParserRule getUnary_operatorRule() {
		return getUnary_operatorAccess().getRule();
	}

	//SymbolTok returns CssTok:
	//	{SymbolTok} symbol=(COMMA | PERCENT);
	public SymbolTokElements getSymbolTokAccess() {
		return pSymbolTok;
	}
	
	public ParserRule getSymbolTokRule() {
		return getSymbolTokAccess().getRule();
	}

	//WSTok returns CssTok:
	//	{WSTok} WS;
	public WSTokElements getWSTokAccess() {
		return pWSTok;
	}
	
	public ParserRule getWSTokRule() {
		return getWSTokAccess().getRule();
	}

	//StringTok returns CssTok:
	//	{StringTok} value=CSSSTRING;
	public StringTokElements getStringTokAccess() {
		return pStringTok;
	}
	
	public ParserRule getStringTokRule() {
		return getStringTokAccess().getRule();
	}

	////	{NumberTok} DASH? ( ONE_INT+ | ONE_INT* '.' => ONE_INT+)
	////	{NumberTok} val=Integer | Real
	////sign=DASH? ( ival=Integer | dval=Real)
	//NumberTok returns CssTok hidden():
	//	{NumberTok} val=Num;
	public NumberTokElements getNumberTokAccess() {
		return pNumberTok;
	}
	
	public ParserRule getNumberTokRule() {
		return getNumberTokAccess().getRule();
	}

	//UrlTok returns CssTok:
	//	{UrlTok} url=URLType;
	public UrlTokElements getUrlTokAccess() {
		return pUrlTok;
	}
	
	public ParserRule getUrlTokRule() {
		return getUrlTokAccess().getRule();
	}

	//ColorTok returns CssTok hidden():
	//	{ColorTok} value=Hex;
	public ColorTokElements getColorTokAccess() {
		return pColorTok;
	}
	
	public ParserRule getColorTokRule() {
		return getColorTokAccess().getRule();
	}

	//IdentifierOrFuncTok returns CssTok hidden(ML_COMMENT):
	//	{IdentifierTok} name=Identifier ({FuncTok.name=current} "(" params+=CssTok+ ")")?;
	public IdentifierOrFuncTokElements getIdentifierOrFuncTokAccess() {
		return pIdentifierOrFuncTok;
	}
	
	public ParserRule getIdentifierOrFuncTokRule() {
		return getIdentifierOrFuncTokAccess().getRule();
	}

	//CssTok hidden(ML_COMMENT):
	//	IdentifierOrFuncTok | SymbolTok | WSTok | StringTok | NumberTok | UrlTok | ColorTok;
	public CssTokElements getCssTokAccess() {
		return pCssTok;
	}
	
	public ParserRule getCssTokRule() {
		return getCssTokAccess().getRule();
	}

	//URLType hidden(): //	FULLURL
	//	"url(" url=ValidURL ")";
	public URLTypeElements getURLTypeAccess() {
		return pURLType;
	}
	
	public ParserRule getURLTypeRule() {
		return getURLTypeAccess().getRule();
	}

	//ValidURLSymbol:
	//	DASH / * "'" | '(' | ')' | need to be escaped* / | "." | UNDERSCORE | "~" | COLON | "/" | "?" | HASHMARK | "[" | "]" |
	//	"@" | "!" | "$" | "&" | "*" | PLUS | COMMA | ";" | "=" KeywordHack;
	public ValidURLSymbolElements getValidURLSymbolAccess() {
		return pValidURLSymbol;
	}
	
	public ParserRule getValidURLSymbolRule() {
		return getValidURLSymbolAccess().getRule();
	}

	//KeywordHack:
	//	"not" | "no" | "url" | "ur";
	public KeywordHackElements getKeywordHackAccess() {
		return pKeywordHack;
	}
	
	public ParserRule getKeywordHackRule() {
		return getKeywordHackAccess().getRule();
	}

	//ValidURL returns ecore::EString hidden():
	//	CSSSTRING | (ValidURLSymbol | KeywordHack | ONE_HEX_LETTER | ONE_NON_HEX_LETTER | ONE_INT | "\\ " | "\\(" | "\\)" |
	//	"\\\'" | "\\\"" | PERCENT (ONE_INT | ONE_HEX_LETTER) (ONE_INT | ONE_HEX_LETTER))+;
	public ValidURLElements getValidURLAccess() {
		return pValidURL;
	}
	
	public ParserRule getValidURLRule() {
		return getValidURLAccess().getRule();
	}

	//terminal IMPORTANT_SYM:
	//	"!important";
	public TerminalRule getIMPORTANT_SYMRule() {
		return tIMPORTANT_SYM;
	} 

	//Identifier returns ecore::EString hidden():
	//	DASH? (UNDERSCORE | ONE_HEX_LETTER | ONE_NON_HEX_LETTER | KeywordHack) => (UNDERSCORE | DASH | ONE_HEX_LETTER |
	//	ONE_NON_HEX_LETTER | ONE_INT | KeywordHack)*;
	public IdentifierElements getIdentifierAccess() {
		return pIdentifier;
	}
	
	public ParserRule getIdentifierRule() {
		return getIdentifierAccess().getRule();
	}

	//Num returns ecore::EDouble hidden():
	//	(PLUS | DASH)? ("." => ONE_INT+ | ONE_INT+ ("." => ONE_INT+)?);
	public NumElements getNumAccess() {
		return pNum;
	}
	
	public ParserRule getNumRule() {
		return getNumAccess().getRule();
	}

	//Hex returns ecore::EString:
	//	HASHMARK => (ONE_INT | ONE_HEX_LETTER)+;
	public HexElements getHexAccess() {
		return pHex;
	}
	
	public ParserRule getHexRule() {
		return getHexAccess().getRule();
	}

	////terminal fragment URL_ESCAPES:
	////	'\\' (' '|'('|')'|"'"|'"')
	////;
	////
	////terminal FULLURL:
	////	'url('
	////		'"' ( URL_ESCAPES | !('\\'|'"'|')') )* '"' |
	////		"'" ( URL_ESCAPES | !('\\'|"'"|')') )* "'" |
	////		( URL_ESCAPES | !('\\'|')') )*
	////	')'
	////;
	//terminal ONE_INT:
	//	"0".."9";
	public TerminalRule getONE_INTRule() {
		return tONE_INT;
	} 

	//terminal ONE_HEX_LETTER:
	//	"a".."f" | "A".."F";
	public TerminalRule getONE_HEX_LETTERRule() {
		return tONE_HEX_LETTER;
	} 

	//terminal ONE_NON_HEX_LETTER:
	//	"g".."z" | "G".."Z";
	public TerminalRule getONE_NON_HEX_LETTERRule() {
		return tONE_NON_HEX_LETTER;
	} 

	//terminal UNDERSCORE:
	//	"_";
	public TerminalRule getUNDERSCORERule() {
		return tUNDERSCORE;
	} 

	//terminal DASH:
	//	"-";
	public TerminalRule getDASHRule() {
		return tDASH;
	} 

	//terminal PLUS:
	//	"+";
	public TerminalRule getPLUSRule() {
		return tPLUS;
	} 

	////terminal INTEGER returns ecore::EInt: ('0'..'9')+;
	////terminal INTEGER:('0'..'9')+;
	////terminal REAL: (('0'..'9')*"."('0'..'9')+);
	////terminal HASH: '#' ('_' | '-' | 'a'..'z' | 'A'..'Z' | '0'..'9' )+;
	//terminal HASHMARK:
	//	"#";
	public TerminalRule getHASHMARKRule() {
		return tHASHMARK;
	} 

	////terminal COLORHASH: '#' ('a'..'z' | 'A'..'Z' | '0'..'9' )+;
	////terminal IDENT: ('_' | 'a'..'z' | 'A'..'Z' ) ('_' | '-' | 'a'..'z' | 'A'..'Z' | '0'..'9' )*;
	////terminal HEX: '###' ('a'..'z' | 'A'..'Z' | '0'..'9' )+;
	//terminal COMMA:
	//	",";
	public TerminalRule getCOMMARule() {
		return tCOMMA;
	} 

	//terminal PERCENT:
	//	"%";
	public TerminalRule getPERCENTRule() {
		return tPERCENT;
	} 

	//terminal ML_COMMENT:
	//	"/ *"->"* /";
	public TerminalRule getML_COMMENTRule() {
		return tML_COMMENT;
	} 

	//terminal WS:
	//	(" " | "\t" | "\r" | "\n")+;
	public TerminalRule getWSRule() {
		return tWS;
	} 

	//terminal CSSSTRING:
	//	"\"" ("\\" ("b" | "t" | "n" | "f" | "r" | "u" | "\"" | "\'" | "0".."9" | "a".."f" | "A".."F" | "\\") | !("\\" |
	//	"\""))* "\"" | "\'" ("\\" ("b" | "t" | "n" | "f" | "r" | "u" | "\"" | "\'" | "0".."9" | "a".."f" | "A".."F" | "\\") |
	//	!("\\" | "\'"))* "\'";
	public TerminalRule getCSSSTRINGRule() {
		return tCSSSTRING;
	} 

	//terminal INCLUDES:
	//	"~=";
	public TerminalRule getINCLUDESRule() {
		return tINCLUDES;
	} 

	//terminal DASHMATCH:
	//	"|=";
	public TerminalRule getDASHMATCHRule() {
		return tDASHMATCH;
	} 

	//terminal COLON:
	//	":";
	public TerminalRule getCOLONRule() {
		return tCOLON;
	} 
}
